我在名为~/Views/Shared/DisplayTemplates
的{{1}}中创建了一个显示模板。它接受一个可空的int并呈现一个二维矩阵,其中突出显示所选的数字:
ImpactMatrix.cshtml
它易于重复使用且效果很好。我可以在我的视图中调用它:
@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>
现在我决定将其扩展并使其成为编辑。我们的想法是为所选数字添加隐藏输入,并使用div将输入与矩阵模板一起包装。从那里开始,使用Javascript与我的显示网格进行交互并填充隐藏的输入应该是一件简单的事情。
我在@Html.DisplayFor(m=> m.ImpactFactor, "ImpactMatrix")
文件夹中创建了一个名为ImpactMatrix.cshtml
的编辑器模板。这是代码:
~/Views/Shared/EditorTemplates
我的问题是隐藏的输入呈现正确,但嵌套的显示模板不会在我的编辑器模板中呈现。我正在尝试做什么?
答案 0 :(得分:3)
似乎目前不支持。
但是,我在本文中使用Html.Partial
找到了解决方案:Nested @Html.DisplayFor(model => baseClass, "BaseClass") for base class template not rendering
重写你的编辑器模板:
@model int?
<div class="impactmatrix-editor">
@Html.HiddenFor(m => m)
@Html.Partial("~/Views/Shared/DisplayTemplates/ImpactMatrix.cshtml", Model)
</div>
注意:@Paul Hadfield在我上面提到的文章中评论了这个问题,这个问题已经针对ASP MVC 4修复了。但是即使我在我的PC上运行这个版本,我也无法使嵌套模板有效。