2014-10-07 232 views
0

希望应该是一个简单的。我创建了一个通用错误视图,当我想在整个站点的操作方法内发生异常时显示这个错误视图。我创建了一个部分页面,所有的导航都在这里生效,因此我不需要这个视图上的控制器,那么如何从控制器内部的操作方法重定向到它?MVC重定向到一个没有控制器的视图

事情是这样的......

[HttpPost] 
public ActionResult Test(VM viewModel) 
{ 
    try 
    { 
     // posting info to the server... 
    } 
    catch (Exception ex) 
    { 
     //Log exception.. 

     //show an error view, however no action method so how do I redirect? 
     return RedirectTo ??? ("Error"); 
    } 
    } 

在此先感谢

+0

MVC使用控制器 - 据我所知你需要一个控制器才能显示视图,是否有任何理由不能只创建一个'ErrorController'? – Charleh 2014-10-07 13:21:56

+0

这是否与您的其他视图位于不同的文件夹中? – GalacticCowboy 2014-10-07 13:22:17

+0

是的,我很愚蠢,试图懒惰,它只是我没有这种观点的模型,所以我不真的想要或需要一个控制器。但是,是的,写这篇文章的时间足以创建控制器...干杯 – user3428422 2014-10-07 13:23:41

回答

5

您可以使用return View()

这告诉MVC生成HTML要显示指定的视图,并将其发送到浏览器。这在Asp.Net WebForm中的行为如同Server.Transfer()

 { 
     //Log exception..  
     //show an error view, however no action method so how do I redirect? 
     return View("your view path"); 
    } 
3

您将需要创建一个控制器和您的错误观点的路线。

的另一种方法是使你的错误查看一个纯HTML页面,只是重定向到这样的:

return Redirect("~/error.html"); 

我发现这个指南设立时的其他MVC应用程序的自定义错误是非常有用的: http://benfoster.io/blog/aspnet-mvc-custom-error-pages

希望这会有所帮助。

+0

谢谢,我也有一个快速浏览,也是一个好帖子 – user3428422 2014-10-07 13:27:32

+0

没有问题。在这篇文章中使用策略的好处是所有的错误都会被框架和IIS自动处理。没有自定义代码是必要的,你可以通过改变你的Web.config中的几行来轻松测试你的错误页面:) – 2014-10-07 13:31:24

相关问题