私のサンプル アプリケーションには 2 つの MVC コントローラー 1.HomeController 2.DetailsController があります。
HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
ホーム -> Index.cshtml
<div>
Home - Index
</div>
DetailsController.cs
public class DetailsController : Controller
{
public ActionResult Index()
{
return View();
}
}
詳細 -> Index.cshtml
<div>
Details - Index
</div>
_Layout.cshtml には、ホームと詳細へのリンクがあります。
_ViewStart.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
_Layout.cshtml
<!DOCTYPE html>
<html data-ng-app="app">
<head>
<base href="/" />
<title>Angular Routing</title>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/App/app.js"></script>
</head>
<body>
<h1>Layout</h1>
<a href="/Home">Home</a>
<a href="/Details">Details</a>
<div ng-view>
@RenderBody()
</div>
</body>
</html>
ページが読み込まれると、_Layout.cshtml からコンテンツが取得されますが、ngView コンテナーには何も読み込まれません。
私の推測では、Angular は、ルート ルート '/' のルート構成で設定されているように、ホーム ビューをロードしようとしています。しかし、_Layout.cshtml を使用して完全なビューを取得し、再びホーム ページを読み込もうとし、このループが無期限に続きます。
app.js
(function () {
var app = angular.module("app", ["ngRoute"]);
app.config(config)
function config($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: "/Home",
})
.when('/Home', {
templateUrl: "/Home",
})
.when('/Details', {
template: "/Details",
});
$locationProvider.html5Mode(true);
}
}());
Chrome コンソールでこのエラーが発生します。
angular.js:13920 RangeError: 最大コール スタック サイズを超えました
そのため、Home/Index ビューを読み込んだ HomeController から Partial ビューを返そうとしましたが、_Layout.cshtml のコンテンツは読み込まれませんでした。
MVC アプリケーションで角度ルーティングを行う方法、_Layout.cshtml で ngView を使用する方法はありますか?