调用@Html.Partial 以显示属于不同控制器的局部视图[重复]

Posted

技术标签:

【中文标题】调用@Html.Partial 以显示属于不同控制器的局部视图[重复]【英文标题】:Calling @Html.Partial to display a partial view belonging to a different controller [duplicate] 【发布时间】:2011-08-28 23:00:33 【问题描述】:

我正在开发一个 ASP.NET MVC 3 应用程序,它的内容页面有一个共同的布局元素模式。但是,因为登录页面没有按照这个布局,所以我不能把这个布局放在\Views\Shared\_Layout.cshtml中。

所以我想添加另一个共享布局,比如\Views\Shared\_Content.cshtml,并从内容视图中调用它......但不幸的是,这些视图属于不同的控制器。

有没有办法为属于不同控制器的视图调用@Html.Partial

【问题讨论】:

有人能有勇气否决我的愚蠢问题吗?我自己做不到。 您应该可以投票结束您自己的问题。 meta.stackexchange.com/questions/163375/… @pyon 我一点也不觉得它愚蠢。这是基于我的 Google 搜索查询出现的第一个搜索结果。这并不愚蠢,只是重复。 【参考方案1】:

没问题。

@Html.Partial("../Controller/View", model)

@Html.Partial("~/Views/Controller/View.cshtml", model)

应该做的伎俩。

如果要通过(其他)控制器,可以使用:

@Html.Action("action", "controller", parameters)

或任何其他重载

【讨论】:

为什么@Html.Partial("~Views/Controller/View", model) 需要.cshtml 扩展名?否则,它会显示未找到视图。 Resharper 6.1 将@Html.Partial("../Controller/View", model) 标记为错误,而不是@Html.Partial("~/Views/Controller/View.cshtml", model)。两者在运行时都可以正常工作。 @GVs 如果 windows 使用 \ 作为目录,那么为什么使用 /。任何原因 @F1betaIndia,我使用 azerty 键盘来获取 / 我按 SHIFT-:,对于 \ 我必须按 AltGr- Html.Action(...) 的使用非常巧妙,通过将ChildActionOnlyAttribute 应用于动作,我得到了我所需要的。【参考方案2】:

正如 GvS 所说,但我也发现使用 strongly typed views 很有用,这样我就可以写类似的东西

@Html.Partial(MVC.Student.Index(), model)

没有魔法字符串。

【讨论】:

有了 Resharper,它们不再像魔术弦了 :) 因为重命名功能?

以上是关于调用@Html.Partial 以显示属于不同控制器的局部视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

以显示属于不同作者的书籍的方式进行查询

MVC+EF 随笔小计——分部视图(Partial View)及Html.Partial和Html.Action差异

仅发布 ASP.NET MVC 后更新 HTML.Partial

部分视图调用方法

MVC如何从视图调用控制器中的动作以返回值

如何调用我的自定义警报控制器功能以显示在其他视图控制器中?