3 回答
TA贡献1820条经验 获得超2个赞
与Erik Funkenbusch讨论之后,导致研究了MVC源代码,看来有两种更好的方法(正确和惯用的吗?)。
两者都涉及为助手提供正确的html名称前缀,并生成与default的输出相同的HTML EditorFor。
我现在将其保留在此处,将进行更多测试,以确保它在深度嵌套的场景中可以工作。
对于以下示例,假设您已经有两个用于OrderLine类的模板:OrderLine.cshtml和DifferentOrderLine.cshtml。
方法1-使用中间模板 IEnumerable<T>
创建一个帮助器模板,将其保存为任何名称(例如“ ManyDifferentOrderLines.cshtml”):
@model IEnumerable<OrderLine>
@{
int i = 0;
foreach (var line in Model)
{
@Html.EditorFor(m => line, "DifferentOrderLine", "[" + i++ + "]")
}
}
然后从主订单模板调用它:
@model Order
@Html.EditorFor(m => m.Lines, "ManyDifferentOrderLines")
方法2-不使用中间模板 IEnumerable<T>
在主订单模板中:
@model Order
@{
int i = 0;
foreach (var line in Model.Lines)
{
@Html.EditorFor(m => line, "DifferentOrderLine", "Lines[" + i++ + "]")
}
}
- 3 回答
- 0 关注
- 556 浏览
添加回答
举报