2011-11-28 63 views
0

我是c#和mvc3中的新成员,所以它可能是一个相当愚蠢的问题: 每当将错误消息发送到日志文件时,我需要显示Error.cshtml视图。我可以从mvc3的类中返回一个视图吗?

我不想写每次都返回视图。这就是为什么我创建了一个类(称为“CatchError”),当发送任何错误时会自动调用它。

对于示例 - 我想表明的观点,如果状态在以下情况下是不是“真”:

if(status == "true") 
    LogMessageFM.SuccessMessage("Feature Management success:" + userid + "/" + features + "/" + shape + "/" + lab + "/" + priceList); 
else 
    LogMessageFM.UnsuccessMessage("Feature Management unsuccess:" + userid + "/" + features + "/" + shape + "/" + lab + "/" + priceList); 

我可以退回从阶级的观点? 或者我应该创建一个新的ActionResult,它会得到错误并返回带有错误的视图?

(但后来,我怎么可能会导致它自动运行......有没有这样的选择吗?)

,我会很高兴得到一些帮助。谢谢。

+0

目前尚不清楚你正在努力实现什么。你想在抛出未处理的异常时显示错误页面? –

+0

控制器中有几处发生错误的地方发送到日志文件。然后我想显示错误的视图(与发送到日志文件相同的错误)。 – ParPar

+0

但是在你的控制器中发生了什么情况?什么时候抛出异常?你可以提供一个控制器操作的例子,你正在写日志文件吗? –

回答

0

很确定只要返回类型是ActionResult就可以返回视图。默认情况下,如果你创建一个像对象一样的类,并且你没有system.web.mvc,你必须在你的文件中引用它,但除此之外,你应该很好。

using System.Web.Mvc; 

public ActionResult CatchError() 
{ 
    if(LogicFails) 
    { 
     return View(); 
    } 
    else 
    { 
     RedirectToAction("Index", "Home"); 
    } 
} 
当然

,因为你返回一个ActionResult你就必须最终返回一些URL,但本质时,这是执行一个HTTP请求到这个网址的所有你说的是。

总之是的,希望这有助于!

快乐编码! ;)

0

如果你的代码中出现的异常和你有在你的web.config适当customErrors标签,然后在defaultRedirect提到的URL将被显示:

<customErrors mode="On" defaultRedirect="/Error/500" /> 

然后,您可以有一个将该URL(/Error/500)指向给定视图的路由。

MSDN article on customErrors

下面

问题的defaultRedirect值可以在任何地方后点更新。所以,如果你已经在你的“家”控制器“CatchError的行动,你可能只是这样做: -

<customErrors mode="On" defaultRedirect="/Home/CatchError" /> 

这意味着,如果你能捕获错误的try catch块例如,您可以将用户重定向到您的CatchError操作。如果你没有发现异常情况,你的用户将自动发送到那里。

+0

对这个问题抱歉,但是我怎样才能改变路线中的“500”? – ParPar

相关问题