我目前正在使用 ASP.Net MVC3 和 Razor 开发一个网站。在“View/Shared”文件夹中,我想添加一个名为“Partials”的子文件夹,我可以在其中放置所有部分视图(为了更好地组织网站)。
只要我在调用视图时始终引用“Partials”文件夹(使用 Razor),我就可以毫无问题地执行此操作:
@Html.Partial("Partials/{ViewName}")
我的问题是,是否有办法将“Partials”文件夹添加到 .Net 在搜索视图时经过的列表中,这样我就可以调用我的视图,而无需引用“Partials”文件夹,如下所示:
@Html.Partial("{ViewName}")
谢谢您的帮助!
解决了这个问题。要将我创建的“Shared/Partials”子目录添加到尝试在 Razor 中查找部分视图时搜索的位置列表中,请使用以下命令:
@Html.Partial("{NameOfView}")
首先创建一个以 RazorViewEngine 作为其基类的视图引擎,并按如下所示添加视图位置。同样,我想将所有部分视图存储在我在 MVC 创建的默认“Views/Shared”目录中创建的“Partials”子目录中。
public class RDDBViewEngine : RazorViewEngine
{
private static readonly string[] NewPartialViewFormats =
{
"~/Views/{1}/Partials/{0}.cshtml",
"~/Views/Shared/Partials/{0}.cshtml"
};
public RDDBViewEngine()
{
base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();
}
}
请注意,位置格式中的 {1} 是控制器名称,{0} 是视图名称。
然后将该视图引擎添加到 global.asax 中的 Application_Start() 方法中的 MVC ViewEngines.Engines 集合中:
ViewEngines.Engines.Add(new RDDBViewEngine());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)