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 關注
- 590 瀏覽
添加回答
舉報