我有一个通用列表,它包含4个值。 如何通过索引获取我的通用列表值?我想获得通用列表中的所有值 这是我的代码:
var Checked = (form.GetValues("assignChkBx")).ToList();
string str = "";
for (int i = 0; i < Checked.Count; i++)
{
str = str + Checked[i]. +",";
}
在这段代码中我得到了所有选中的复选框值。现在我想获得所有价值。我怎样才能获得价值?
答案 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
}
...
}