У меня есть веб-приложение ASP.NET с главной страницей, содержащей заголовок, вкладки, BodyContent (содержимое каждой страницы находится здесь), >footer заполнители для пользовательских элементов управления (верхний колонтитул, вкладки, нижний колонтитул) и содержимого страницы (MainContent). Пользовательский элемент управления «Вкладки» имеет неупорядоченный список вкладок, например, давайте рассмотрим текст вкладки как TabOne, TabTwo, TabFour. Один щелчок на каждой вкладке соответствует веб-страница загружается с помощью функции javascript со следующей строкой кода:
window.location.href = "TabOne.aspx";
Теперь я получил новый запрос на добавление вкладки TabThree для загрузки угловой страницы, показывающей верхний колонтитул, вкладки, нижний колонтитул и BodyContent, содержащий содержимое углового приложения, т.е. при нажатии TabThree >, я должен загрузить угловое приложение в существующее веб-приложение ASP.NET, аналогичное справочной ссылке (Как включить внешнее приложение Angular 2 в страницу ASP.NET Webforms aspx)
//TabThree.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Base.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Programs.Default" %>
<%@ MasterType VirtualPath="~/Base.Master" %>
<asp:Content ID="Header" ContentPlaceHolderID="Header" runat="server">
<%--<base href="/AngularComponents/">--%> //No difference with uncommenting the base href
<%--<base href="/">--%>
<script type="text/javascript" src="../Tabs.js"></script>
</asp:Content>
<asp:Content ID="Tab" ContentPlaceHolderID="Tab" runat="server">
</asp:Content>
<asp:Content ID="BodyContent" ContentPlaceHolderID="BodyContent" runat="server">
<div id="pageContent">
<app-root>Loading...</app-root>
<script type="text/javascript" src="AngularModules/inline.bundle.js"></script>
<script type="text/javascript" src="AngularModules/main.bundle.js"></script>
<script type="text/javascript" src="AngularModules/polyfills.bundle.js"></script>
<script type="text/javascript" src="AngularModules/vendor.bundle.js"></script>
<link href="AngularModules/styles.bundle.css" rel="stylesheet" />
</div>
</asp:Content>
<asp:Content ID="Footer" ContentPlaceHolderID="Footer" runat="server">
</asp:Content>
Если я запускаю угловое приложение независимо, оно отлично запускается с помощью команды ng serve -o и отлично отображается по URL-адресу (http://localhost:4200/#/TabThree?id=TID100). Теперь я скопировал папку dist в рабочую область веб-приложения ASP.NET и переименовал ее в AngularModules. При нажатии TabThree я попытался загрузить угловой компонент в Bodycontent с помощью одной из следующих строк кода для навигации:
window.location.href = "TabThree.aspx/#/TabThree?ID=TID100";
window.location.href = "TabThree.aspx?AngularComponents/#/TabThree?ID=TID100";
Контент Head загружается нормально, но Bodycontent, который должен загружать компонент Angular TabThree, пуст, а ошибка консоли регистрируется, как показано ниже:
ERROR Sys.ParameterCountException: Sys.ParameterCountException: Parameter count mismatch.
"ERROR"
{
[functions]: ,
__ proto __: { },
__zone_symbol__currentTask: { },
description: "Sys.ParameterCountException: Parameter count mismatch.",
message: "Sys.ParameterCountException: Parameter count mismatch.",
name: "Sys.ParameterCountException",
stack: "Sys.ParameterCountException: Sys.ParameterCountException: Parameter count mismatch.
at String$startsWith (http://localhost:62557/ScriptResource.axd?
d=gb2H0hcR0_2oXWpLxJmdTg2S_j-8tZAZO1r6sTjByVD4-_6_cs99E6CayZY9pi0-N-ip5bmZNlhZWaB-IG2xnFZG-NKKnY8LqkMvfx1uzDhC1zqaP8PQi4JB24Hq7urD6rwOMv6ZCQbxzc19pQ0mcl6iexnSPre_a0zN-jpBGmFTlZ5rxoZ47qCy4shfjh4T0&t=ffffffff87bbe9c7:494:12)
at startsWith
Я сослался на ссылку (Включая приложение Angular2 в веб-формы Asp.Net Page), но это тоже не решило проблему, и я не могу запустить компонент Angular как вкладку в заполнителе BodyContent.
Я изучил обе справочные ссылки, но у них нет правильной информации о том, как происходит маршрутизация/навигация для загрузки компонента angular на странице ASPX.
Я пробовал другие подходы, чем упомянутые выше, которые перенаправляют всю страницу и запускают приложение Angular как отдельное, но мое требование состоит в том, чтобы вписать компонент angular в Bodycontent TabThree.aspx. strong>, чтобы она соответствовала другим вкладкам/страницам.
Любая помощь в решении этой проблемы с маршрутизацией в гибридном приложении будет очень полезна, и я буду признателен за нее.
Заранее спасибо!!
Я не нашел возможных дубликатов для одного и того же, и я также связал ссылки, надеюсь, это не помечено как дубликат.