Si no encuentra su ruta, quiere manejarla como un error normal HTTP 404.
Si solo agrega el atributo [HandleError]
a su clase o acción, MVC buscará una vista Error
en su carpeta de vistas.
También puede añadir una o incluso una página estática ErrorController
y añadir esto a su Web.config
:
<customErrors mode="On" >
<error statusCode="404" redirect="/Error/PageNotFound/" />
</customErrors>
o usted podría manejar el HTTP 404 en su Global.asax.cs
y la ruta a un ErrorController
mediante programación. Así es como generalmente lo hago:
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));
}
problema con este enfoque es que .. si intenta representar la acción del niño @ Html.Action (routeValues) con valores erróneos, va a proporcionar acción '' PageNotFound' como PartialView' sin informar realmente ninguna excepción. – Nenad