C# 更改自定义Http404错误页的默认视图文件夹
我想在我的asp.net mvc3网站中自定义错误页 因此,我发现了这篇非常有用的帖子:而且效果很好 但是,我的C# 更改自定义Http404错误页的默认视图文件夹,c#,asp.net-mvc-3,http-status-code-404,global-asax,viewengine,C#,Asp.net Mvc 3,Http Status Code 404,Global Asax,Viewengine,我想在我的asp.net mvc3网站中自定义错误页 因此,我发现了这篇非常有用的帖子:而且效果很好 但是,我的Http404.cshtml文件不在Views默认文件夹中。它位于名为baseview的文件夹中。 我已经在该文件夹中有了我的\u Layout.cshtml和其他视图或局部视图 默认情况下,ViewEngine不检查此文件夹(它只检查视图文件夹以及我的区域的所有视图文件夹)。因此,我使用了ViewEngineExtension并将其添加到我的Global.asax的应用程序的Star
Http404.cshtml
文件不在Views
默认文件夹中。它位于名为baseview
的文件夹中。
我已经在该文件夹中有了我的\u Layout.cshtml
和其他视图或局部视图
默认情况下,ViewEngine
不检查此文件夹(它只检查视图
文件夹以及我的区域的所有视图
文件夹)。因此,我使用了ViewEngineExtension并将其添加到我的Global.asax
的应用程序的Start()中的System.Web.Mvc.ViewEngines
集合中。我的所有应用程序都运行良好,可以访问我的布局和其他baseview
内容
对于Global.asax
的应用程序的
,我不能说同样的情况。此方法忽略上一个视图引擎,只查看默认视图文件夹。
我试图在应用程序中添加我的viewEngineeExtension\u Error()
方法,如soViewEngines.Engines.add(new BaseViewsEngineExtension())代码>但它不会改变任何东西。这与我在应用程序\u Start()
中使用的行完全相同
有关应用程序错误()
,请参阅我的代码:
我的问题是:如何强制errorController.Excecute(rc)
视图引擎在baseview
文件夹中搜索我的Http404.cshtml视图?更改Http404
操作以返回其视图的完整路径。正如SLaks所说,您应该在errorController中返回视图的完整路径
public class ErrorController : Controller
{
public ActionResult Http404()
{
return View("~/BaseViews/Error/Http404.cshtml");
}
}
但是它不会工作,因为您的错误被覆盖,所以您无法得到预期的结果。
要绕过此问题,您可以告诉您的应用程序,应用程序中的一切正常。\u错误如下:
Request.StatusCode = 200;
我希望它能解决你的问题。我不太明白你的意思?你能说得更具体一点吗?我仍然不知道如何在应用程序错误中定义视图引擎,但这并不重要。将StatusCode
更改为200即可,谢谢。
Request.StatusCode = 200;