在MVC5中,我知道您可以在Shared
下有一个Views
文件夹,然后使用RenderPartial
在部分视图中呈现。
整个网站是否只有一个Shared
文件夹?或者是否可以有多个“共享”区域?
例如,我的网站上有以下结构: -
\浏览
\视图\共享
\控制器
\模型
\身份
\身份\观
\身份\控制器
\身份\模型
我想知道Identity
文件夹是否也可以拥有自己的Shared
文件夹,RenderPartial也能用于?
如果可以,我可以从另一个PartialView
文件夹中呈现Shared
吗?我试过这个但是没有成功 - 即使我使用tilde ~
方法直接引用View,但它似乎不喜欢抛出exception
。但是,如果我将PartialView
放在我的\Views\Shared
文件夹中,那么一切正常。
答案 0 :(得分:1)
从其他文件夹而不是默认的PartialView
文件夹中呈现View
时,您必须提供完整路径和文件类型:
<强>实施例强>
@Html.Partial("~/Identity/Views/myviewname.cshtml")
您正在尝试实现已存在的名为Areas的功能。
你应该看看这里:
Walk through: Organizing an ASP.NET MVC Application using Areas
答案 1 :(得分:1)
您可以在Application_Start()
事件中的 Global.asax 中添加以下代码,从而在ViewEngine中包含您的目录:
RazorViewEngine razorEngine = ViewEngines.Engines.OfType<RazorViewEngine>().FirstOrDefault();
if (razorEngine != null)
{
string[] newPartialViewFormats = new[]
{
"~/Indentity/Views/{1}/{0}.cshtml",
"~/Identity/Views/Shared/{0}.cshtml"
};
razorEngine.PartialViewLocationFormats = razorEngine.PartialViewLocationFormats.Union(newPartialViewFormats).ToArray();
}
现在,ViewEngine会在查看/共享以及身份/观看/共享
中找到该视图