可以在编辑器模板中调用显示模板吗?

Dan*_* A. 10 c# asp.net-mvc asp.net-mvc-3

我已经在~/Views/Shared/DisplayTemplatesnamed中创建了一个显示模板ImpactMatrix.cshtml.它接受一个可为空的int并呈现一个二维矩阵,其中突出显示所选的数字:

@model int?

@{
    var matrix = ImpactMatrix.GetMatrix();
}   

<div class="impactmatrix">
  <table>
    @for (int i = 0; i < matrix.GetLength(0); i++)
    { 
        <tr>
          @for (int j = 0; j < matrix.GetLength(1); j++)
          {
              var cell = matrix[i, j];
              <td data-color="@cell.Color" 
                class="matrix @(Model == cell.Value ? cell.Color.ToString() : "")">
                    @cell.Value
              </td>
          }
        </tr>
    }
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

它很容易重复使用,效果很好.我可以在我的视图中调用它,如下所示:

@Html.DisplayFor(m=> m.ImpactFactor, "ImpactMatrix")
Run Code Online (Sandbox Code Playgroud)

现在我决定扩展它并使其成为编辑器.我们的想法是为所选数字添加隐藏输入,并使用div将输入与矩阵模板一起包装.从那里开始使用Javascript与我的显示网格交互并填充隐藏的输入应该是一件简单的事情.

我ImpactMatrix.cshtml在我的~/Views/Shared/EditorTemplates文件夹中创建了一个名为的编辑器模板.这是代码:

@model int?

<div class="impactmatrix-editor">
    @Html.HiddenFor(m => m)
    @Html.DisplayFor(m => m, "ImpactMatrix")
</div>
Run Code Online (Sandbox Code Playgroud)

我的问题是隐藏的输入正确呈现,但嵌套的显示模板不会在我的编辑器模板中呈现.我正在尝试做什么?

mip*_*e34 4

目前好像不支持。

Html.Partial但是,我找到了使用本文中的解决方案: Nested @Html.DisplayFor(model => baseClass, "BaseClass") 对于基类模板不呈现

像这样重写你的编辑器模板:

@model int?

<div class="impactmatrix-editor">
    @Html.HiddenFor(m => m)
    @Html.Partial("~/Views/Shared/DisplayTemplates/ImpactMatrix.cshtml", Model)
</div>
Run Code Online (Sandbox Code Playgroud)

注意:@Paul Hadfield 在我上面提到的文章中评论了这个问题,该问题已在 ASP MVC 4 中修复。但即使我在我的 PC 上运行这个版本,我也无法使嵌套模板工作。