C# 从多个单选按钮MVC3获取值
我的视图中有一个表(见下图),需要从单选按钮组中收集值。然后我按下下一步按钮,我有一个列表,其中列出了每个表行的值。这是我在视图中的代码C# 从多个单选按钮MVC3获取值,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我的视图中有一个表(见下图),需要从单选按钮组中收集值。然后我按下下一步按钮,我有一个列表,其中列出了每个表行的值。这是我在视图中的代码 @foreach (var item in ViewBag.convertedSubjectsList) { <tr> <td> <br /> <br /> @item.Part <
@foreach (var item in ViewBag.convertedSubjectsList)
{
<tr>
<td>
<br />
<br />
@item.Part
<br />
<br />
</td>
<td>
@item.Name
</td>
<td>
<form>
<input type="radio" name="used" value="yes" />
@Resources.Resources.SubjectRadioYes<br />
<input type="radio" name="used" value="no" />
@Resources.Resources.SubjectRadioNo
</form>
</td>
</tr>
}
@foreach(ViewBag.convertedSubjectsList中的变量项)
{
@项目.部分
@项目名称
@Resources.Resources.SubjectRadioYes
@Resources.Resources.SubjectRadioNo
}
这可能吗
不同的东西
你所有的单选按钮都应该是相同的形式
@using (Html.BeginForm()) {
//yourcode
}
然后我会将“convertedSubjectList”作为模型(或者作为模型使用的ViewModel的一部分)
假设模型的类型为IEnumerable
然后循环并检索元素
@for (int i = 0; i < Model.Count; i++) {
<tr>
<td>@Html.DisplayFor(m => Model[i].Part)</td>
<td>@Html.Displayfor(m => Model[i].Name)</td>
<td>@Html.RadioButtonYesNoFor(m => Model[i].xxx)</td>//name of the property used for radio value
//you could use a CheckBoxFor, if you have only "yes/no", but as you want
</tr>
}
@for(int i=0;iModel[i].Part)
@Displayfor(m=>Model[i].Name)
@Html.RadioButtonYesNoFor(m=>Model[i].xxx)//用于radio值的属性的名称
//如果您只有“是/否”,您可以使用复选框,但根据您的需要
}
一点帮助
public static IHtmlString RadioButtonYesNoFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
var stringBuilder = new StringBuilder();
stringBuilder.Append(string.Format("{0} {1}", html.RadioButtonFor(expression, true).ToHtmlString(), "Yes"));
stringBuilder.Append(string.Format("{0} {1}", html.RadioButtonFor(expression, false).ToHtmlString(), "No"));
return MvcHtmlString.Create(stringBuilder.ToString());
}
public static IHtmlString RadioButtonYesNoFor(此HtmlHelper html,表达式)
{
var stringBuilder=新的stringBuilder();
追加(string.Format(“{0}{1}”,html.RadioButtonFor(expression,true).ToHtmlString(),“Yes”);
追加(string.Format(“{0}{1}”,html.RadioButtonFor(expression,false).ToHtmlString(),“No”);
返回MvcHtmlString.Create(stringBuilder.ToString());
}
然后,您应该能够在发布的操作中以IList的身份获取数据。查看:
<form method=post action="@Url.Action("Save")">
<table>
@foreach (var item in ViewBag.convertedSubjectsList)
{
<tr>
<td>
<br /><br />
@item.Part
<br /><br />
</td>
<td>
@item.Name
</td>
<td>
<input type="radio" name="@item.Part" value="yes" />
Yes<br />
<input type="radio" name="@item.Part" value="no" />
No
</td>
</tr>
}
</table>
<input type="submit" value="Submit" />
</form>
等等,你的问题是“这可能吗”,然后你提供一个打印屏幕,显示它的外观。有些东西不太合情合理……这张图片是为了显示当前的视图,以便更好地理解上下文。如果这对你来说是个大问题,我可以删除它。
public ActionResult Save(FormCollection form)
{
foreach (var item in form.AllKeys)
{
string value = form[item];
// save data
}
}