asp.netmvc3Webサイトのエラーページをカスタムしたい。
だから、私はこの非常に便利な投稿を見つけました:asp.netMVC3のカスタムエラーページとそれはうまく機能します
ただし、私のHttp404.cshtml
ファイルはViews
デフォルトのフォルダにありません。。という名前のフォルダにありますBaseViews
。そのフォルダには、自分_Layout.cshtml
と他のビューまたは部分的なビューがすでにあります。
このフォルダはデフォルトではチェックされていません(フォルダとmyのすべてのフォルダViewEngine
のみをチェックします)。そこで、ViewEngineExtensionを使用して、のコレクションに追加します。私のアプリケーションはすべて完全に正常に動作し、レイアウトやその他のものにアクセスできます。Views
views
Areas
System.Web.Mvc.ViewEngines
Global.asax
Application_Start()
BaseViews
Global.asax
'sについても同じことは言えませんApplication_Error()
。このメソッドは、以前のビューエンジンを無視し、デフォルトのビューフォルダーのみを調べます。Application_Error()
このようにViewEngineExtensionをメソッドに追加しようとしましたViewEngines.Engines.Add(new BaseViewsEngineExtension());
が、何も変更されません。で使用しているのとまったく同じ行ですApplication_Start()
。
:については私のコードを参照してApplication_Error()
ください
protected void Application_Error()
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "Index";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 404:
routeData.Values["action"] = "Http404";
break;
}
}
IController errorController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorController.Execute(rc);
}
私の質問は次のとおりです。ビューエンジンにフォルダ内errorController.Excecute(rc)
のHttp404.cshtmlビューを検索させるにはどうすればよいですか?BaseViews