謝謝大家創造NOTFOUND查看,這裏是我想出了從你的答案:
public static class HttpErrorResultHelper
{
public static HttpErrorResult HttpError(this Controller controller, int statusCode)
{
return new HttpErrorResult
{
StatusCode = statusCode
};
}
public static HttpErrorResult HttpError(this Controller controller, int statusCode, ActionResult chainedAction)
{
return new HttpErrorResult
{
StatusCode = statusCode,
ChainedAction = chainedAction,
};
}
}
public sealed class HttpErrorResult : ActionResult
{
public int StatusCode { get; set; }
public ActionResult ChainedAction { get; set; }
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
context.HttpContext.Response.TrySkipIisCustomErrors = true;
context.HttpContext.Response.StatusCode = this.StatusCode;
if (this.ChainedAction != null)
{
ChainedAction.ExecuteResult(context);
}
}
}
這樣做是預先將狀態碼前的響應,同時仍然允許您發送實際視圖結果。
this.HttpError(404, this.View("NotFound"));
HttpNotFoundResult現在出現在System.Web.MVC中 - 你不需要編寫你自己的 – 2011-05-27 21:23:53