Nếu không tìm thấy tuyến đường của bạn, bạn muốn xử lý nó như một lỗi HTTP 404 bình thường.
Nếu bạn chỉ thêm thuộc tính [HandleError]
vào lớp học hoặc hành động của mình, MVC sẽ tìm kiếm chế độ xem Error
trong thư mục chế độ xem của bạn.
Bạn cũng có thể thêm một hoặc thậm chí là một trang tĩnh ErrorController
và thêm video này vào Web.config
của bạn:
<customErrors mode="On" >
<error statusCode="404" redirect="/Error/PageNotFound/" />
</customErrors>
Hoặc bạn có thể xử lý các HTTP 404 trong Global.asax.cs
của bạn và tuyến đường đến một ErrorController
lập trình. Đó là cách tôi thường làm điều đó:
protected void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError().GetBaseException();
var routeData = new RouteData();
if (ex.GetType() == typeof(HttpException))
{
var httpException = (HttpException)ex;
switch (httpException.GetHttpCode())
{
case 404:
routeData.Values.Add("action", "PageNotFound");
break;
default:
routeData.Values.Add("action", "GeneralError");
break;
}
}
else
{
routeData.Values.Add("action", "GeneralError");
}
routeData.Values.Add("controller", "Error");
routeData.Values.Add("error", ex);
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
Nguồn
2011-01-28 22:12:08
Cách tiếp cận này là .. nếu bạn cố gắng hiển thị hành động con @ Html.Action (routeValues) với giá trị sai, nó sẽ trả về hành động 'PageNotFound' là' PartialView' mà không thực sự báo cáo bất kỳ ngoại lệ nào. – Nenad