2

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

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

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

这工作正常,但返回服务器错误只是为了标记此异常似乎有点矫枉过正。

有没有更好/标准的方法来做到这一点?

4

2 回答 2

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);
    }
于 2013-10-17T11:15:02.417 回答
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");
    }
}
于 2013-10-17T11:05:22.277 回答