【问题标题】:mvc3 - using partial views in a different areamvc3 - 在不同区域使用局部视图
【发布时间】:2011-09-09 22:17:24
【问题描述】:

我有两个关于局部视图的问题...

  1. 何时使用局部视图与 @helper 方法,我都使用过 可以互换,并希望在他们的 用法。你们是做什么的?

  2. 如何引用另一个区域的局部视图。

我有一个名为 admin 的区域,并且在常规 Views 目录中有一个部分视图。我如何使用它.. 我尝试了以下方法,因为找不到它。

@Html.Partial(VirtualPathUtility.ToAbsolute("~/Views/ControllerName/_PartialView"),
 Model)

我尝试过的其他 -

@Html.Partial("~/Views/ControllerName/_PartialView", Model)

【问题讨论】:

    标签: asp.net-mvc-3 razor asp.net-mvc-3-areas


    【解决方案1】:

    我不确定你说的“助手”是指 Html 助手,还是剃刀助手

    如果您指的是 Razor 助手,那么它们与 Partials 的不同之处在于您可以像调用函数一样调用它们,传递您想要的任何参数。部分主要被“模型”系统所困扰(当然还有 Temp/ViewData/Bag。

    这完全取决于您希望如何使用代码。

    至于你的部分。您必须包含后缀。

    @Html.Partial("~/Views/ControllerName/_PartialView.cshtml", Model)
    

    【讨论】:

    • 甜蜜的后缀是我所缺少的!
    【解决方案2】:

    既然提问者问的是区域,这里是如何在一个区域中做的

     @Html.Partial("~/Areas/Store/Views/Pages/Checkout.cshtml")
    

    【讨论】:

    • 即使在该区域内,这似乎也是必要的。我从来没有遇到过 ../.. 类型相对路径的运气,但如果有办法做到这一点,我会很感兴趣
    • 在同一区域内,如果您使用标准目录结构,则“PrivacyPolicy.cshtml”将起作用,因为 MVC 将搜索预期的目录结构。相对路径不应该在 AFAIK 中工作,可能由于 MVC 搜索路径的动态方式而不清楚它是相对于什么。 IE。它会开始植根于Area,还是Area/Views/或/Area/Views/ControllerName/?因此,它要么是仅用于预期目录结构中的某些内容的文件名,要么是来自应用程序根目录的完整路径,例如您的答案。
    • 我还调整了我的默认取景器(或其他任何名称),因此我可能在此过程中破坏了一些默认行为 - 但如果您遇到困难/沮丧,这种方式肯定有效
    【解决方案3】:

    我只是给出我正在尝试做的具体而简单的例子。 我需要能够使用位于主共享文件夹中的部分视图从区域页面注销。这是我所做的:

    1. 在区域视图中,我参考了部分视图

         <div class="float-right">
              <section id="login">            
                **@Html.Partial("~/Views/Shared/_LoginPartial.cshtml")**
              </section>
         </div>
      
    2. _LoginPartial 代码所在的主共享文件夹中,我添加了{new = area ("")},来自:

      using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
      

      到:

      using (Html.BeginForm("LogOff", "Account", **new { area = "" },** FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
      

    希望在某些方面有所帮助!

    【讨论】:

      【解决方案4】:

      另一种选择是使您想要在区域之间共享的局部视图共享。

      所以你把它放在主 ~/Views/Shared/ 文件夹中,例如

      ~/Views/Shared/_MyPartialView.cshtml.
      

      然后您可以通过说从任何区域引用它

      @Html.Partial("_MyPartialView")
      

      【讨论】:

        【解决方案5】:

        确保区域中的控制器具有[Area("MyArea")] 注释。在这篇文章中,通过 ASP.NET Core 中的 Ajax div 更新从区域边界中提取部分视图对我来说适用于 Tag Helpers 和 @Html.ActionLink。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-07
          • 1970-01-01
          相关资源
          最近更新 更多