我可以从mvc3中的类返回视图吗?

时间:2011-11-28 13:52:24

标签: asp.net-mvc-3 class view

我是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来获取错误并返回带有错误的视图??

(但是,我怎么能让它自动运行......有这样的选择吗?)

我很乐意得到一些帮助。感谢。

2 个答案:

答案 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)指向您指定视图的路线。

MSDN article on customErrors

在以下问题后更新

defaultRedirect值可以指向任何位置。因此,如果您的“Home”控制器中已经有“CatchError”操作,您可以这样做: -

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

这意味着,如果您能够在try catch块中捕获错误,则可以将用户重定向到CatchError操作。如果您没有发现异常,那么无论如何都会自动将您的用户发送到那里。