我正在构建一个普通的旧网站,其中一个页面中有一个单页应用程序。导航栏上还有其他页面,例如 Home、About、Blog,我的应用位于 Dashboard 中。
在查看了我的 SPA 选项后,我决定尝试 Durandal,因为它似乎对我的 ASP.NET 网页站点最友好。我正在使用 Hot Towelette,因为它看起来是一个非常不错的软件包,尽管我可能会切换到普通的 Durandal,因为我可能没有使用所有 Towelettes 功能。
设置 Nuget 包后,我将 index.cshtml 更新为我的 dashboard.cshtml 并将其适当地链接到导航栏上。从我的主页,我可以导航到仪表板,SPA 启动并运行良好。但是,当从仪表板单击主页按钮(或博客、关于等)时,页面只会让我返回 SPA 的初始视图。
这是我从 index.cshtml 更改后的dashboard.cshtml。我没有对来自 Nuget 的热毛巾纸做任何其他更改。
@using System.Web
@using System.Web.Optimization
@{
Layout = "Layout/_Layout.cshtml"; //<--- My nav bar with my other links are in here
}
<div id="applicationHost">
@RenderPage("_splash.cshtml")
</div>
@Scripts.Render("~/scripts/vendor")
@if (HttpContext.Current.IsDebuggingEnabled)
{
<script type="text/javascript" src="App/durandal/amd/require.js" data-main="/App/main"></script>
}
else
{
<!-- Remember to run the Durandal optimizer.exe to create the main-built.js -->
<script type="text/javascript" src="App/main-built.js"></script>
}
问:如何在常规网站中设置 Durandal SPA 页面,而不让它接管我所有页面的路由?
编辑 这里是导航部分:
//Original
<nav>
<a href="/">Home</a>
<a href="aboutus">About Us</a>
<a href="blog">Blog</a>
</nav>
将它们更改为以下内容似乎没有什么不同。此外,即使我使用的是 FriendlyUrls,它也会强制将 .cshtml 扩展名添加到 URL 中。
//Ineffective Changes
<nav>
<a href="default.cshtml">Home</a>
<a href="aboutus.cshtml">About Us</a>
<a href="blog.cshtml">Blog</a>
</nav>