我目前正在使用 ASP.Net MVC3 和 Razor 开发一个网站。在“View/Shared”文件夹中,我想添加一个名为“Partials”的子文件夹,我可以在其中放置所有部分 View (为了更好地组织网站。
只要我在调用 View 时始终引用“Partials”文件夹(使用 Razor),我就可以毫无问题地执行此操作:
@Html.Partial("Partials/{ViewName}")
我的问题是,是否有办法将“Partials”文件夹添加到 .Net 在搜索 View 时经过的列表中,这样我就可以调用我的 View ,而无需引用“Partials”文件夹,例如所以:
@Html.Partial("{ViewName}")
感谢您的帮助!
最佳答案
解决了这个问题。要将我创建的“Shared/Partials”子目录添加到尝试在 Razor 中查找部分 View 时搜索的位置列表中,请使用:
@Html.Partial("{NameOfView}")
首先创建一个以 RazorViewEngine 作为其基类的 View 引擎,并按如下所示添加 View 位置。同样,我想将所有部分 View 存储在我在 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} 是 Controller 名称,{0} 是 View 名称。
然后将该 View 引擎添加到 global.asax 中的 Application_Start() 方法中的 MVC ViewEngines.Engines 集合中:
ViewEngines.Engines.Add(new RDDBViewEngine());
关于asp.net - 在ASP.Net MVC中向 "View/Shared"文件夹添加子目录并调用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973000/