MVC Custom RazorViewEngine初始化无法正常工作

时间:2012-10-08 20:10:05

标签: asp.net-mvc razor viewengine

我创建了一个自定义Razor View引擎

现在我做的时候:

public class ConfigViewEngine : RazorViewEngine
{
    public ConfigViewEngine()
    {
        var existingViewLocationFormats = new List<string>();
        var partialViewLocationFormats = new List<string>();

        //Folder Structure: Views\Desktop\Home and Views\Mobile\Home
        existingViewLocationFormats.Insert(0,
                                         "~/Views/" + ConfigurationManager.AppSettings["configName"] +
                                         "/Shared/{0}.cshtml");
        partialViewLocationFormats.Insert(0,
                                        "~/Views/" + ConfigurationManager.AppSettings["configName"] +
                                        "/Shared/{0}.cshtml");
        existingViewLocationFormats.Insert(0,
                                         "~/Views/" + ConfigurationManager.AppSettings["configName"] +
                                         "/{1}/{0}.cshtml");
        partialViewLocationFormats.Insert(0,
                                        "~/Views/" + ConfigurationManager.AppSettings["configName"] +
                                        "/{1}/{0}.cshtml");

        ViewLocationFormats = existingViewLocationFormats.ToArray();
        PartialViewLocationFormats = partialViewLocationFormats.ToArray();
    }
}

我的_ViewStart.cshtml看起来像

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new ConfigViewEngine());
Layout = "~/Views/" + ConfigurationManager.AppSettings["configName"] + "/Shared/_Layout.cshtml";

当我转到/ Home / Dashboard

时出现以下错误
The view 'Dashboard' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Dashboard.aspx
~/Views/Home/Dashboard.ascx
~/Views/Shared/Dashboard.aspx
~/Views/Shared/Dashboard.ascx
~/Views/Home/Dashboard.cshtml
~/Views/Home/Dashboard.vbhtml
~/Views/Shared/Dashboard.cshtml
~/Views/Shared/Dashboard.vbhtml

如果我在Dashboard.cshtml中放置一个空的/Views/Home/文件,它将使用该文件,然后当我刷新时,它将从/Views/configName/Home/Dashboard

提供正确的文件

有人知道为什么它没有正确初始化吗?

1 个答案:

答案 0 :(得分:0)

想出来。我不应该把这些代码放在_ViewStart.cshtml中,我本来应该把它放在Global.asax.cs中

相关问题