Tra*_*ter 1 c# razor asp.net-mvc-4
我有一个 C# MVC Razor 网站。通常,控制器从 Views 文件夹加载视图。但是,我有一个特殊情况,我需要在 Views 文件夹之外渲染视图。我怎么做?
控制器将加载 /Views/Random/Index.cshtml
无法加载/Random/Index.cshtml
/Random/test.aspx 加载没有问题,但无法将 cshtml 文件更改为 aspx 文件,它们需要定期构建。
我尝试过在控制器中 return Redirect("/Random/Index.cshtml") ,但目前根本没有控制器。
奇怪的是它适用于我的生产环境,但不适用于本地主机。在本地主机中我得到:
不会提供您请求的页面类型,因为它已被明确禁止。扩展名“.cshtml”可能不正确。请检查下面的 URL 并确保拼写正确。
请求的 URL:/Random/Index.cshtml
你绝对可以做到这一点。为此,您需要创建一个新的自定义视图引擎,例如
public class MyViewEngine : RazorViewEngine
{
private static string[] AdditionalViewLocations = new[]{
"~/Random/{0}.cshtml"
};
public MyViewEngine()
{
base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(AdditionalViewLocations).ToArray();
base.ViewLocationFormats = base.ViewLocationFormats.Union(AdditionalViewLocations).ToArray();
base.MasterLocationFormats = base.MasterLocationFormats.Union(AdditionalViewLocations).ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的global.asax的Application_Start方法中注册这个视图引擎,如下所示-
ViewEngines.Engines.Add(new MyViewEngine ());
Run Code Online (Sandbox Code Playgroud)
如果您希望视图引擎优先,请将其插入到第 0 个位置。像这样 -
ViewEngines.Engines.Insert(0, new MyViewEngine());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |