是否有可能在MVC多个共享文件夹,并在其他共享文件夹执行的RenderPartial到的局部视图?(

2019-10-21 04:48发布

在MVC5,我知道你可以有一个Shared文件夹下的Views ,然后使用RenderPartial在局部视图渲染。

有没有永远只能一个Shared整个网站的文件夹?或者是有可能有多个“共享”的地方?

举例来说,我在我的网站的结构如下: -

\浏览

\视图\共享

\控制器

\楷模

\身份

\标识\浏览

\标识\控制器

\标识\型号

我不知道是否也有可能为Identity文件夹有自己的Shared文件夹,以及,那也的RenderPartial将工作?

如果这是可能的,我可以呈现PartialView从这个其他Shared文件夹? 我曾尝试这一点,但没有成功-即使我直接引用使用查看tilde ~方法,但它似乎不喜欢跑步抛出exception 。 但是,如果我把PartialView在我\Views\Shared文件夹,然后一切正常。

Answer 1:

您可以通过添加以下代码在Global.asax中包括在视图引擎的目录Application_Start()事件:

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();
 }

现在视图引擎会发现在浏览/分享 ,也身份/查看/共享视图

你可以参考这个链接 ,并指该SO帖子



Answer 2:

当渲染PartialView •来自其它文件夹,而不是默认的View文件夹时,必须提供完整的路径以及文件类型:

例如:

@Html.Partial("~/Identity/Views/myviewname.cshtml")

你正在做的方式,貌似你试图实现一个已经存在的功能命名的区域。

你应该看看这里:

漫步:组织使用领域的ASP.NET MVC应用程序



文章来源: Is it possible to have multiple Shared folders in MVC, and execute a RenderPartial to a Partial View in the other shared folder?