我是c#和mvc3的新手,所以这可能是一个非常愚蠢的问题: 每当向日志文件发送错误消息时,我都需要显示Error.cshtml视图。
我不想每次都写回来查看视图。这就是为什么我创建了一个在发送任何错误时自动调用的类(称为“CatchError”)。
例如 - 在下列情况下,如果状态不是“True”,我想显示视图:
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)
非常确定只要返回类型是ActionResult就可以返回视图。默认情况下,如果您正在创建类似于对象的类,并且您没有system.web.mvc,则必须在文件中引用它,但除此之外您应该是好的。
using System.Web.Mvc;
public ActionResult CatchError()
{
if(LogicFails)
{
return View();
}
else
{
RedirectToAction("Index", "Home");
}
}
当然,因为你要返回一个ActionResult,你最终必须返回一些URL,但基本上你所说的只是在执行此操作时对这个URL发出HTTP请求。
简而言之,希望这有帮助!
快乐的编码! ;)
答案 1 :(得分:0)
如果您的代码中出现异常并且您的web.config中有适当的customErrors
标记,则会显示defaultRedirect
中提到的网址:
<customErrors mode="On" defaultRedirect="/Error/500" />
然后,您可以拥有一条将该网址(/Error/500
)指向您指定视图的路线。
在以下问题后更新
defaultRedirect
值可以指向任何位置。因此,如果您的“Home”控制器中已经有“CatchError”操作,您可以这样做: -
<customErrors mode="On" defaultRedirect="/Home/CatchError" />
这意味着,如果您能够在try catch
块中捕获错误,则可以将用户重定向到CatchError操作。如果您没有发现异常,那么无论如何都会自动将您的用户发送到那里。