我在ASP.NET MVC中有一个全能路由设置,所以我可以捕获/ this-page,/ that-page等。
当您点击页面时,会调用该操作,例如Index(string page)
,然后针对数据库中的值测试page
以确定是否可以找到该页面。如果找不到,我想显示我FileNotFound
中的视图ErrorController
,我不想重定向,因为我想将网址保持为http://.../page-that-isnt-found,就像StackOverflow一样,如果你给它一个虚假的问题 - (https://stackoverflow.com/questions/zzz-aaa)。
现在我的问题在于找出代码,我已经尝试了两种方法:
[ do page db check ]
if (page == null)
return RedirectToAction("FileNotFound", "Error");
// return View("FileNotFound"); // can't opt for a controller ?
我得到的最接近的是RedirectToAction()
,但当然它会进行实际重定向,而我的网址指向/错误,这是不希望的行为。我尝试过使用return View()
,但似乎我无法指定控制器,只能指定视图名称?
答案 0 :(得分:1)
更正,通过返回一个View,您指向要呈现的视图名称,而不是ActionMethod。您应该能够创建一个包含404页面内容的视图(在同一控制器的视图或共享视图中)。
希望这有帮助。
答案 1 :(得分:1)
您还可以使用Server.Transfer来保留原始网址。关于如何在asp.net mvc中进行此操作有很好的线索 - How to simulate Server.Transfer in ASP.NET MVC?