【发布时间】:2010-12-10 14:26:28
【问题描述】:
我有一个表单,其中可以在视图中动态生成多个单选按钮,在提交的表单上,我如何收集控制器中的值。例如,有像 Gender (Male and Female)、Education (BS,MS,BCS) 这样动态生成的单选按钮。我怎样才能在容器中获得价值。
【问题讨论】:
标签: c# asp.net-mvc
我有一个表单,其中可以在视图中动态生成多个单选按钮,在提交的表单上,我如何收集控制器中的值。例如,有像 Gender (Male and Female)、Education (BS,MS,BCS) 这样动态生成的单选按钮。我怎样才能在容器中获得价值。
【问题讨论】:
标签: c# asp.net-mvc
如果您知道单选按钮的名称,则可以使用操作参数。如果名称是任意的,您可以从传递给您的 POST 操作的 FormCollection 参数中获取值(它是一个 NameValueCollection,因此您可以遍历键并获取相应的值)。
我个人建议您使用确定性名称:
Gender:
<input type="radio" value="M" name="radios[0]" />
<input type="radio" value="F" name="radios[0]" />
Education:
<input type="radio" value="BS" name="radios[1]" />
<input type="radio" value="MS" name="radios[1]" />
<input type="radio" value="BCS" name="radios[1]" />
在你的控制器动作中你可以使用一个集合:
[HttpPost]
public ActionResult Update(string[] radios)
{
// The radios collection will contain the selected values like:
// radios[0] = "F"
// radios[1] = "MS"
...
}
【讨论】:
如果表单集合是动态生成的单选按钮,唯一的方法就是使用它们。
public ActionResult controllername(FormCollection form)
{
foreach(string radioName in dynamicRadioList)
{
var value = form[radioName];
//blah blah
}
}
【讨论】: