我有一种情况,我需要以局部视图的形式向客户端返回一个异常。这是我的代码
catch(PasswordException ex)
{
Response.StatusCode = 500;
ViewBag.Message = ex.Message;
return PartialView("Exception");
}
我将响应状态代码设置为500,以便在ajax调用的错误部分捕获响应。
这样可以正常工作,但仅仅为了标记此异常而返回服务器错误似乎有点过分。
有更好/标准的方法吗?
答案 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");
}
}