Я создаю простой старый веб-сайт, на одной из страниц которого есть одностраничное приложение. На панели навигации есть другие страницы, такие как «Главная», «О программе», «Блог», а мое приложение находится на панели инструментов.
Изучив свой вариант SPA, я решил попробовать Durandal, потому что он кажется наиболее дружественным к моему сайту ASP.NET Web Pages. Я использую Hot Towelette, так как он кажется довольно хорошим пакетом, хотя я могу переключиться на обычный Durandal, так как я не могу использовать все функции Towelettes.
После настройки пакета Nuget я обновил index.cshtml до своего dashboard.cshtml и соответствующим образом связал его на панели навигации. С моей домашней страницы я могу перейти на панель инструментов, и SPA срабатывает и работает нормально. Однако, когда я нажимаю кнопку «Домой» (или блог, информацию и т. д.) на панели инструментов, страница просто возвращает меня к исходному виду SPA.
Вот мой файл dashboard.cshtml после того, как я изменил его с index.cshtml. Я не внес никаких других изменений в материалы Hot Towelette, которые пришли из 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>
}
В: Как мне настроить страницу SPA Durandal на обычном веб-сайте, чтобы она не перенаправляла все мои страницы?
Изменить Вот раздел навигации:
//Original
<nav>
<a href="/">Home</a>
<a href="aboutus">About Us</a>
<a href="blog">Blog</a>
</nav>
Изменение их на следующее, похоже, не имеет значения. Кроме того, он принудительно добавляет расширение .cshtml в URL-адрес, хотя я использую FriendlyUrls.
//Ineffective Changes
<nav>
<a href="default.cshtml">Home</a>
<a href="aboutus.cshtml">About Us</a>
<a href="blog.cshtml">Blog</a>
</nav>