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

pyo*_*yon 89 c# asp.net asp.net-mvc razor

我正在开发一个ASP.NET MVC 3应用程序,其内容页面具有一个共同的布局元素模式.但是,因为登录页面不遵循此布局,所以我无法放置此布局\Views\Shared\_Layout.cshtml.

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

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

GvS*_*GvS 157

那没问题.

@Html.Partial("../Controller/View", model)
Run Code Online (Sandbox Code Playgroud)

要么

@Html.Partial("~/Views/Controller/View.cshtml", model)
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

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

@Html.Action("action", "controller", parameters)
Run Code Online (Sandbox Code Playgroud)

或任何其他重载

  • 为什么@ Html.Partial("〜Views/Controller/View",model)需要.cshtml扩展名?否则,它说找不到视图. (8认同)
  • Resharper 6.1标记`@ Html.Partial("../ Controller/View",model)`作为错误,但不是`@Html.Partial("〜/ Views/Controller/View.cshtml",model)`.两者都在运行时工作正常. (2认同)

Cra*_*aig 7

正如GvS所说,但我也发现使用强类型视图很有用,这样我就能编写类似的东西

@Html.Partial(MVC.Student.Index(), model)
Run Code Online (Sandbox Code Playgroud)

没有魔法字符串.

  • 使用Resharper,他们不再感觉像魔法字符串了:) (12认同)