与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++ + "]") }}


