Dav*_*Dev 3 asp.net-mvc asp.net-mvc-routing
我有一个有很多路线的网站.
一些路线,例如/sector-overview我希望用户看到的特定页面.
其他路线,例如/sectoroverview,最终呈现包括在主页上的部分的动作.
第二条路径仅仅是应用程序的内部路径,但如果用户在其地址栏中输入该路径(这是一个容易犯的错误),系统会将其视为有效请求并返回HTML部分.
我可以将第二条路线重命名为类似的东西/internal-sectoroverview,但这并不能解决问题,只是隐藏它.
如果用户键入此请求,是否有任何方法可以阻止处理请求?处理这个问题的最佳方法是什么?
您可以使用路径约束来阻止路径.但是,在你的情况下,我会用[ChildActionOnly]这样装饰你的内部动作:
[ChildActionOnly]
public ActionResult Overview()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
通过执行此操作,仅在使用@Html.Action或时才会呈现操作@Html.RenderAction.如果您尝试通过浏览器访问它,则会收到错误消息.
UPDATE
要返回404而不是错误,您可以覆盖OnException控制器上的方法并在那里处理它.像这样的东西:
protected override void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
//check if filterContext.Exception was thrown by child action only (maybe by text)
filterContext.Result = new HttpStatusCodeResult(404);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |