我在~/Views/Shared/DisplayTemplates
命名中创建了一个显示模板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>
它很容易重复使用并且效果很好。我可以像这样在我的视图中调用它:
@Html.DisplayFor(m=> m.ImpactFactor, "ImpactMatrix")
现在我决定扩展它并使它成为一个编辑器。这个想法是为选定的数字添加一个隐藏的输入,并将输入与矩阵模板一起用一个 div 包装起来。从那里使用 Javascript 与我的显示网格交互并填充隐藏的输入应该是一件简单的事情。
我ImpactMatrix.cshtml
在我的~/Views/Shared/EditorTemplates
文件夹中创建了一个编辑器模板,也命名为 。这是代码:
@model int?
<div class="impactmatrix-editor">
@Html.HiddenFor(m => m)
@Html.DisplayFor(m => m, "ImpactMatrix")
</div>
我的问题是隐藏输入正确呈现,但嵌套显示模板未在我的编辑器模板中呈现。我正在尝试做的事情可能吗?