[英]Bind ViewModel with List<T> to a specific control
我有一個包含列表的ViewModel。
我看過的示例顯示:
通過遍歷所有列表項來訪問列表項:
for (var i = 0; i < Model.Compliances.Count; i++) { <%=Html.HiddenFor(x => x.Compliances[i].ComplianceId) %> <%=Html.TextBoxFor(x => x.Compliances[i].ComplianceName) %> }
或在列表中指定一個硬編碼位置:
<%=Html.HiddenFor(x => x.Compliances[2].ComplianceId) %> <%=Html.TextBoxFor(x => x.Compliances[2].ComplianceName) %>
我想知道是否有某種方法可以通過更具體的東西(例如其ID)將特定的列表項綁定到控件,而不是將其恰好位於列表中的什么位置?
感謝您的幫助!
您陷於WebForms術語中。
這些被稱為HTML Helper,而不是控件。 這些助手呈現HTML,並且不會按照您的想法“綁定”任何東西。 之所以將它們稱為幫助程序,是因為它們只是幫助以正確的方式格式化數據。
如您所見,助手使用特定索引的原因是因為將表單發布回服務器時,必須在基於0的表單上對它們進行索引,以便模型綁定程序可以發現它們並重新創建模型。 它是通過名稱和索引這兩種方式完成的,而不是通過值的id或其他方式完成的。
因此,如果您希望列表在回發時綁定,那么它必須是基於0的索引...或者它必須使用本文的“非順序索引”部分中定義的“索引”值:
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.