C# 是否可以在MVC中有多个共享文件夹,并对另一个共享文件夹中的局部视图执行渲染部分?
在MVC5中,我知道您可以在C# 是否可以在MVC中有多个共享文件夹,并对另一个共享文件夹中的局部视图执行渲染部分?,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,在MVC5中,我知道您可以在Views下拥有一个Shared文件夹,然后使用RenderPartial在局部视图中进行渲染 整个网站是否只有一个共享的文件夹?或者是否可能有多个“共享”区域 例如,我的网站上有以下结构:- \观点 \视图\共享 \控制器 \模型 \身份 \标识\视图 \标识\控制器 \标识\模型 我想知道Identity文件夹是否也可以拥有自己的共享文件夹,RenderPartial也可以为其工作 如果这是可能的,我可以从另一个共享的文件夹渲染部分视图吗?我尝试过这个方法,但没有
Views
下拥有一个Shared
文件夹,然后使用RenderPartial
在局部视图中进行渲染
整个网站是否只有一个共享的文件夹?或者是否可能有多个“共享”区域
例如,我的网站上有以下结构:-
\观点
\视图\共享
\控制器
\模型
\身份
\标识\视图
\标识\控制器
\标识\模型
我想知道Identity
文件夹是否也可以拥有自己的共享
文件夹,RenderPartial也可以为其工作
如果这是可能的,我可以从另一个共享的文件夹渲染部分视图吗?我尝试过这个方法,但没有成功——即使我使用tilde~
方法直接引用视图,但它似乎不喜欢运行抛出异常。但是,如果我将PartialView
放在我的\Views\Shared
文件夹中,则一切正常。从其他文件夹而不是默认的视图
文件夹渲染PartialView
时,必须提供完整路径和文件类型:
Ex:
@Html.Partial("~/Identity/Views/myviewname.cshtml")
您所做的方式看起来像是在尝试实现一个名为Areas的已经存在的功能
你应该看看这里:
通过在应用程序启动()事件中添加以下代码,可以将目录包括在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();
}
RazorViewEngine razorEngine=ViewEngines.Engines.OfType().FirstOrDefault();
if(razorEngine!=null)
{
字符串[]newPartialViewFormats=new[]
{
“~/Indentity/Views/{1}/{0}.cshtml”,
“~/Identity/Views/Shared/{0}.cshtml”
};
razorEngine.PartialViewLocationFormats=razorEngine.PartialViewLocationFormats.Union(newPartialViewFormats.ToArray();
}
现在,ViewEngine将在查看/共享和标识/视图/共享
你可以参考,也可以参考这个。完美。谢谢你。我没有输入.cshtml
,我本以为这是自动的。所以我假设它是网站唯一的一个共享文件夹,考虑到我们必须指定使用的任何其他部分视图的完整路径?@Johnny您可以在ViewEngine中添加目录:默认情况下,它在views目录中显示,但我们可以添加更多的目录,引擎应该在其中找到视图。您只需要添加“标识”作为区域。因此,您将拥有单独的视图、控制器和视图,并最终为每个区域创建单独的共享文件夹:)