我使用了下面的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