Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在MVC中有多个共享文件夹,并对另一个共享文件夹中的局部视图执行渲染部分?_C#_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 是否可以在MVC中有多个共享文件夹,并对另一个共享文件夹中的局部视图执行渲染部分?

C# 是否可以在MVC中有多个共享文件夹,并对另一个共享文件夹中的局部视图执行渲染部分?,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,在MVC5中,我知道您可以在Views下拥有一个Shared文件夹,然后使用RenderPartial在局部视图中进行渲染 整个网站是否只有一个共享的文件夹?或者是否可能有多个“共享”区域 例如,我的网站上有以下结构:- \观点 \视图\共享 \控制器 \模型 \身份 \标识\视图 \标识\控制器 \标识\模型 我想知道Identity文件夹是否也可以拥有自己的共享文件夹,RenderPartial也可以为其工作 如果这是可能的,我可以从另一个共享的文件夹渲染部分视图吗?我尝试过这个方法,但没有

在MVC5中,我知道您可以在
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目录中显示,但我们可以添加更多的目录,引擎应该在其中找到视图。您只需要添加“标识”作为区域。因此,您将拥有单独的视图、控制器和视图,并最终为每个区域创建单独的共享文件夹:)