Asp.net mvc 4 在使用pushstate进行部分视图分页时优雅地处理永久链接
当我的应用程序使用pushstate加载ASP.NET MVC部分视图进行分页时,我正在寻找一种干净的方法来处理永久链接 如果我的控制器返回部分视图(当前),则永久链接将单独显示部分视图,而不显示由_Layout.cshtml定义的站点的其余部分 如果我的控制器返回一个常规视图,permalink可以工作,但是将整个页面加载到只为部分页面提供的容器中会产生一种Droste效果 我找到的唯一解决方案是将404重定向到主页,并使用url的相关部分导航到正确的页面Asp.net mvc 4 在使用pushstate进行部分视图分页时优雅地处理永久链接,asp.net-mvc-4,partial-views,permalinks,pushstate,Asp.net Mvc 4,Partial Views,Permalinks,Pushstate,当我的应用程序使用pushstate加载ASP.NET MVC部分视图进行分页时,我正在寻找一种干净的方法来处理永久链接 如果我的控制器返回部分视图(当前),则永久链接将单独显示部分视图,而不显示由_Layout.cshtml定义的站点的其余部分 如果我的控制器返回一个常规视图,permalink可以工作,但是将整个页面加载到只为部分页面提供的容器中会产生一种Droste效果 我找到的唯一解决方案是将404重定向到主页,并使用url的相关部分导航到正确的页面 但是,这会阻止我使用自定义错误页面(
但是,这会阻止我使用自定义错误页面(这恰好是一个非常棒的错误页面)。好的,我知道如何使用双控制器设置来实现这一点 NavigationController处理ajax调用并返回部分视图(注意没有“索引”) 单独的PermalinkController通过返回整个常规视图来处理permalinks(注意,它有一个“索引”,但没有“主视图”: 路线:
routes.MapRoute(
"PermalinkRouter",
"{action}",
new { controller = "Permalink", action = "Index" },
new { }
);
routes.MapRoute(
"NavigationRouter",
"Navigation/{action}/{id}",
new { controller = "Navigation", action = "Home", id = UrlParameter.Optional },
new { }
);
观点:
~/Views/Shared/\u Layout.cshtml:
...
<header></header>
<div id="pageViewContainer">
@RenderBody()
</div>
<footer></footer>
...
routes.MapRoute(
"PermalinkRouter",
"{action}",
new { controller = "Permalink", action = "Index" },
new { }
);
routes.MapRoute(
"NavigationRouter",
"Navigation/{action}/{id}",
new { controller = "Navigation", action = "Home", id = UrlParameter.Optional },
new { }
);
...
<header></header>
<div id="pageViewContainer">
@RenderBody()
</div>
<footer></footer>
...
<div> Home Content </div>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.Partial("~/Views/Navigation/Home.cshtml", null)