類似於我問的最後一個問題,但有點複雜。AngularJS可選的URL參數與HTML5模式和ASP.Net MVC
我有一個ASP.Net MVC服務Angular應用程序。
.when("/Catalog",
{
templateUrl: "/htm/catalog/catalog.htm"
})
.when("/Catalog/:Category1",
{
templateUrl: "/htm/catalog/search.htm"
})
.when("/Catalog/:Category1/:Category2",
{
templateUrl: "/htm/catalog/search.htm"
})
.when("/Catalog/:Category1/:Category2/:Category3",
{
templateUrl: "/htm/catalog/search.htm"
})
.when("/Catalog/:Category1/:Category2/:Category3/:Category4",
{
templateUrl: "/htm/catalog/search.htm"
});
$ locationProvider.html5Mode(真);
和MVC路由看起來是這樣的:
// AngularJS Route. This is what allows angular to handle its own routing.
routes.MapRoute(
"hash",
"#/{whatever}/{param}/{param2}/{param3}/{param4}/{param5}",
new
{
controller = "Home",
action = "Index",
param = UrlParameter.Optional,
param2 = UrlParameter.Optional,
param3 = UrlParameter.Optional,
param4 = UrlParameter.Optional,
param5 = UrlParameter.Optional
}
);
// This catches all of the other requests (e.g. /img/logo.jpg);
routes.MapRoute(
"whatever",
"{whatever}/{param}",
new
{
controller = "Home",
action = "Index",
param = UrlParameter.Optional,
param2 = UrlParameter.Optional,
param3 = UrlParameter.Optional,
param4 = UrlParameter.Optional,
param5 = UrlParameter.Optional
}
);
家庭/ index動作只是返回我的索引頁:
public void Index()
{
String html = System.IO.File.ReadAllText(HttpContext.Server.MapPath("~/htm/index.htm"));
HttpContext.Response.Write(html);
}
說我遇到的問題是,當我試着打其中一個具有可選參數的路由,頁面掛起,給出此javascript錯誤:
錯誤:已達到10次$ digest()迭代。中止!
有時它會無休止地呈現自己(就像鏡子照鏡子一樣),這使我認爲「無論」路徑是否會導致問題。如果沒有這些可選參數,路由將完全失敗。通過這種方式,頁面可以渲染並將參數加載到$ routeParams中,但頁面會掛起,大概是因爲它正在遞歸呈現。
如果我取出「whatever」MVC路由上的可選參數並嘗試用散列符號(/#/ Catalog/test)命中路由,它會加載得很好(它不會掛起,路由參數在那裏),但html5版本(/ Catalog/test)無法找到MVC路由。
很明顯,我的問題是與我的路由,但我不知道我做錯了什麼。有人可以解釋爲什麼問題可能是什麼?