26

我需要表示两个数据库实体,并且需要在单个页面中输出它们。

我有这样的东西

视图 Def ViewA ViewB 测试 ViewC

我想让 ViewC 显示 ViewA,它显示 ViewB。

现在我正在使用这样的东西:

// View C
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionDetails"), i); %>


// View A
<!-- bla -->
<% Html.RenderPartial(Url.Content("../Definition/DefinitionEditActions")); %>

有更好的方法吗?我发现与相对路径名的链接会烧伤你。有小费吗?

任何机会我都可以像...

Html.RenderPartial("定义","DefinitionDetails",i); ?

谢谢您的帮助

4

4 回答 4

48

这对我有用!

@Html.Partial("~/Views/NewsFeeds/NewsFeedPartial.cshtml")
于 2013-02-28T06:37:03.467 回答
35

您可以参考具有完整路径的视图,例如:

Html.RenderPartial("~/Views/Definition/DefinitionDetails")

更好的是,使用T4MVC 库,它执行上述操作并使其(准)强类型。您可以从任何控制器或视图中引用任何视图。你像这样使用它:

Html.RenderPartial(MVC.Definition.Views.DefinitionDetails)

或者

Html.RenderPartial(MVC.Definition.Views.DefinitionDetails, myModel)
于 2010-05-26T18:31:29.647 回答
12

只是为了澄清哪些选项确实有效:

1)如果您提供路径,需要视图文件的扩展名。

2)如果您不提供路径,请不要提供扩展名。

下面的示例假定为 cshtml 文件。

RenderPartial在代码块中使用:

// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
Html.RenderPartial("DefinitionDetails"); 

// This looks in specified path and requires the extension
Html.RenderPartial("~/Views/Definition/DefinitionDetails.cshtml");

用于Partial内联 Razor 语法:

// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
@Html.Partial("DefinitionDetails")

// This looks in specified path and requires the extension
@Html.Partial("~/Views/Definition/DefinitionDetails.cshtml")

注意:显然RenderPartial比 略快Partial,但我也希望完全路径名称会比让 MVC 搜索文件更快。

如果您在循环中生成部分(即从您的视图模型中的集合),您可能需要通过特定的视图模型:

例如

   @foreach (var group in orderedGroups)
   {
       Html.RenderPartial("~/Views/ControllerName/ViewName.cshtml", group);
   }

我只需要在一个项目上完成所有这些工作,发现标记的答案有点误导。

于 2013-08-01T08:41:39.247 回答
1

您能否不将部分复制到共享文件夹中,然后执行以下操作:

<% Html.RenderPartial("DefinitionDetails", i); %>

<% Html.RenderPartial("DefinitionEditActions"); %>

于 2010-05-26T04:15:55.417 回答