2012-09-20 55 views
-3

我有一個通用列表,它包含4個值。 如何通過索引獲取我的通用列表值?我想在泛型列表 所有值,這是我的代碼:如何按索引查找通用列表值

var Checked = (form.GetValues("assignChkBx")).ToList();  
string str = ""; 
for (int i = 0; i < Checked.Count; i++) 
{ 
    str = str + Checked[i]. +","; 
} 

在這段代碼中我得到了檢查所有複選框的值。現在我想要獲得所有的價值。我怎樣才能獲得價值?

+3

「獲得所有值」 - *什麼*值,你說什麼? – Dennis

+0

當複選框被選中時,我得到行ID。 –

回答

3

你對通用列表的問題很具誤導性,我懷疑它與你真正的問題無關。

取決於您在視圖內如何生成可能或不可能的複選框。如果您直接使用<input type="checkbox">標記對其進行硬編碼,那麼未檢查的複選框的值將永遠不會發送到服務器 - 這就是HTML複選框的工作原理。在這種情況下,你將無法獲得所有的值。另一方面,如果您使用Html.CheckBoxFor幫助程序生成它們,那麼您會注意到此幫助程序爲每個複選框添加一個隱藏字段以發送所有值。儘管這個幫助器在布爾值上運行。

因此,我建議你創建一個包含2個屬性視圖模型:一個拿着指示用戶是否在視圖中選擇這個值是不是您所感興趣的值和一個布爾值屬性:

public class ItemViewModel 
{ 
    public string Value { get; set; } 
    public bool Checked { get; set; } 
} 

然後讓具有這些項目的集合視圖模型:

public class MyViewModel 
{ 
    public ItemViewModel[] Items { get; set; } 
} 

現在你的視圖中可以呈現這樣的價值觀:

@model MyViewModel 
@using (Html.BeginForm()) 
{ 
    for (var i = 0; i < Model.Items.Length; i++) 
    { 
     <div> 
      @Html.CheckBoxFor(x => x.Items[i].Checked) 
      @Html.HiddenFor(x => x.Items[i].Value) 
     </div> 
    } 

    <button type="submit">OK</button> 
} 

終於控制器動作,這種形式將提交給,你將能夠獲得所有的值內:

[HttpPost] 
public ActionResult SomeAction(MyViewModel model) 
{ 
    foreach (var item in model.Items) 
    { 
     // here you could use item.Checked and item.Value 
    } 
    ... 
}