我使用了下面的ASP.NET MVC v1和v2以下的代码,但是当我今天向我的应用程序添加了Area时,该区域的控制器不能“ t在我的Areas/Views/controllerView文件夹中找到任何视图。它发布了非常着名的例外情况,它搜索了这4个标准文件夹,但没有看到区域下方。ASP.NET MVC 2中的自定义视图引擎不能与区域一起工作
如何更改代码以便它可以与区域一起使用?也许在ASP.NET MVC 2支持区域自定义视图引擎的例子?关于它在网络上的信息是非常scarse ..
下面的代码:
public class PendingViewEngine : VirtualPathProviderViewEngine
{
public PendingViewEngine()
{
// This is where we tell MVC where to look for our files.
/* {0} = view name or master page name
* {1} = controller name */
MasterLocationFormats = new[] {"~/Views/Shared/{0}.master", "~/Views/{0}.master"};
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.aspx", "~/Views/Shared/{0}.aspx", "~/Views/Shared/{0}.ascx",
"~/Views/{1}/{0}.ascx"
};
PartialViewLocationFormats = new[] {"~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.ascx"};
}
protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
{
return new WebFormView(partialPath, "");
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
return new WebFormView(viewPath, masterPath);
}
}
我确实有这个,我有地区注册类,但问题依然存在。问题是,我们的视图引擎会重置文件夹的某些路径,以允许在各自文件夹中的视图和共享文件夹之间进行链接,如您所见。 – mare 2010-05-06 19:21:14
编写附加视图引擎时,这些区域不相关。 http://aspnet.codeplex.com/sourcecontrol/network/Show?projectName=aspnet&changeSetId=23011#266536是默认的WebFormViewEngine,并且它没有关于区域的代码。这就是我认为它可能与配置有关的原因。 – Jab 2010-05-06 19:49:07
感谢您的建议,但它必须是视图引擎问题,因为如果我从global.asax.cs注释掉它,它会发现区域视图没有问题。 – mare 2010-05-06 20:08:26