-3

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

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

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

4

1 回答 1

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
    }
    ...
}
于 2012-09-20T05:47:30.313 回答