fea*_*net 6 checkbox asp.net-mvc controls webforms formcollection
我有一个表单,其中包含一大堆复选框和一些其他类型的控件.我需要检索每个选中复选框的名称.
做这个的最好方式是什么?我可以使用linq查询吗?
所以在伪代码中,我希望做这样的事情:
var names = formCollection
.Where(c => c is Checkbox && c.Checked)
.Select(c => c.Name);
Run Code Online (Sandbox Code Playgroud)
更新似乎MVC提交复选框的方式与普通表单的行为方式不同,因为隐藏字段也会呈现.我在这里找到了详细信息:如何处理ASP.NET MVC表单中的复选框?
Anywho,我已经得到了该线程的帮助以及下面BuildStarted的答案.以下代码完成了这一操作.
var additionalItems = form.AllKeys
.Where(k => form[k].Contains("true") && k.StartsWith("addItem"))
.Select(k => k.Substring(7));
Run Code Online (Sandbox Code Playgroud)
不幸的是,该集合中没有这种类型的信息.但是,如果您在所有复选框之前添加类似的内容,<input type='checkbox' name='checkbox_somevalue' />则可以运行类似的查询
var names = formCollection.AllKeys.Where(c => c.StartsWith("checkbox"));
Run Code Online (Sandbox Code Playgroud)
由于只会检出已检查的值,因此您无需验证是否已对其进行检查.
这是一个只捕获检查值的人
var names = formCollection.AllKeys.Where(c => c.StartsWith("test") &&
formCollection.GetValue(c) != null &&
formCollection.GetValue(c).AttemptedValue == "1");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14908 次 |
| 最近记录: |