如何通过索引查找通用列表值

时间:2012-09-20 05:38:31

标签: asp.net-mvc asp.net-mvc-3

我有一个通用列表,它包含4个值。 如何通过索引获取我的通用列表值?我想获得通用列表中的所有值 这是我的代码:

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

在这段代码中我得到了所有选中的复选框值。现在我想获得所有价值。我怎样才能获得价值?

1 个答案:

答案 0 :(得分: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
    }
    ...
}
相关问题