簡體   English   中英

將ViewModel與列表綁定 <T> 到特定的控制

[英]Bind ViewModel with List<T> to a specific control

我有一個包含列表的ViewModel。

我看過的示例顯示:

  1. 通過遍歷所有列表項來訪問列表項:

     for (var i = 0; i < Model.Compliances.Count; i++) { <%=Html.HiddenFor(x => x.Compliances[i].ComplianceId) %> <%=Html.TextBoxFor(x => x.Compliances[i].ComplianceName) %> } 
  2. 或在列表中指定一個硬編碼位置:

     <%=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM