有人能为我提供一个控制器的好例子来处理模型的已选中复选框吗?
例如。如何在控制器中仅抓取已检查的项目以及相应的下拉框值?
视图
<form>
<table>
<tr>
<td>
<input type="checkbox" name="something" value="12345" checked="true" />
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="something" value="54321" checked="false" />
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="something" value="11111" checked="false" />
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
</tr>
</table>
<input type="submit" />
</form>
模特
public class FormCollection
{
// how would this look?
}
控制器
public ActionResult Sort(FormCollection model)
{
FormCollection _model = new FormCollection();
// iterate through model to get only values that are checked
// add them to _model
// how would this look?
}
答案 0 :(得分:1)
首先,类FormCollection
已经存在于框架中:http://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.108).aspx所以如果要将提交的数据组合到模型中,请为模型类使用另一个名称。
其次,复选框列表会在IEnumerable<string>
上绑定,因此您的操作可能如下所示:
public ActionResult Sort(IEnumerable<string> something)
{
// iterates only checked items
foreach(var item in something)
{
var correspondingDropdownValue = Request.Form[item]
}
}
这需要在您的下拉列表中添加name
字段,并使其与复选框值对应:
<input type="checkbox" name="something" value="11111" checked="false" />
<select name="11111">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>