私は、ページの1つに単一ページのアプリケーションを持つ単純な古いWebサイトを構築しています。ナビゲーション バーには、ホーム、概要、ブログなどの他のページがあり、私のアプリはダッシュボードにあります。
SPA オプションを検討した結果、Durandal を試すことにしました。Durandal が ASP.NET Web ページ サイトに最も適していると思われるからです。私はホット タオルケットを使用していますが、これは非常に優れたパッケージのようです。
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>
}
Q: すべてのページのルーティングを引き継がずに、通常の Web サイトに 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>