一起返回部分视图和错误响应

时间:2013-10-17 11:02:05

标签: asp.net-mvc asp.net-mvc-ajax

我有一种情况,我需要以局部视图的形式向客户端返回一个异常。这是我的代码

            catch(PasswordException ex)
            {
                Response.StatusCode = 500;
                ViewBag.Message = ex.Message;
                return PartialView("Exception");
            }

我将响应状态代码设置为500,以便在ajax调用的错误部分捕获响应。

这样可以正常工作,但仅仅为了标记此异常而返回服务器错误似乎有点过分。

有更好/标准的方法吗?

2 个答案:

答案 0 :(得分:1)

试试这个,创建自定义错误枚举并使用如下:

/// <summary>
/// Redirect to custom error page.
/// </summary>
/// <returns>View for custom error page.</returns>
public ActionResult Error(CustomError customErrorType,string message)
{
switch (customErrorType)
    {
        case CustomError.A:
            @ViewBag.ErrorMessage = message;
            @ViewBag.Title= CustomError.A;
            break;
        case CustomError.B:
            @ViewBag.ErrorMessage = message;
            @ViewBag.Title= CustomError.B;
            break;          
    }
    return View("_CustomError");
}

查看

@{
    @ViewBag.Title
  }

    @ViewBag.ErrorMessage

重定向如下:

catch(PasswordException ex)
    {
        Response.StatusCode = 500;
        return RedirectToAction(Response.StatusCode,ex.Message);
    }

答案 1 :(得分:0)

您可以在web.config上声明错误:

  <customErrors mode="On" defaultRedirect="~/Error">
   <error redirect="~/Error/ServerError" statusCode="500" />
   <error redirect="~/Error/NotFound" statusCode="404" />
 </customErrors>

然后您在ErrorController

中进行管理
public class ErrorController : Controller
{
    public ViewResult Index()
    {
        return PartialView("Error");
    }
    public ViewResult ServerError()
    {
        Response.StatusCode = 500; 
        return PartialView("ServerError");
    }

     public ViewResult NotFound()
    {
        Response.StatusCode = 404; 
        return PartialView("NotFound");
    }
}