【发布时间】:2018-02-12 16:11:52
【问题描述】:
我有一个看法:
@using(Html.BeginForm())
{
<div>
<table id="dimensionFeedbackTable">
<tbody>
@for(int i = 0; i < 6; i++)
{
<tr>
<td>
<div>
<p>
<text>
Rate @i
</text>
</p>
</div>
</td>
@foreach(var item in Model.DeptList)
{
<td>
<div style="text-align: center;">
@Html.RadioButtonFor(m => item.DepartmentValue, i,
new
{
id = i,
style = "min-height:45px;"
})
</div>
</td>
}
</tr>
}
</tbody>
</table>
<button id="submitComment" value="submit">
@{
<text>Submit</text>
}
</button>
</div>
}
该视图中的模型是 EmployeeModelClass。这里是:
public class EmployeeModelClass
{
public int Id
{
get; set;
}
public IEnumerable<DepartmentModelClass> DeptList
{
get; set;
}
}
public class DepartmentModelClass
{
public string DepartmentCode
{
get; set;
}
[Range(1, 6)]
public int? DepartmentValue
{
get; set;
}
}
我的控制器:
[HttpPost]
public ActionResult Index(EmployeeModelClass emp, IEnumerable<DepartmentModelClass> qec)
{
emp.DeptList = qec;
return View(emp);
}
每一行都应该为它自己分组。例如,Rate 1 行只能选择一个单选按钮。现在,应该绑定这些按钮。如果在任何行中选择了第二个单选按钮,则其值 (DepartmentValue) 应设置为 2。因此,当我提交时,我会得到选择了哪些单选按钮的集合。
我已经尝试了很多组合来设置正确的模型并绑定它。还尝试了 html 辅助方法 RadioButton,但仍然没有返回值的运气。我设法得到的最接近的是返回一个集合,但尽管在控制器中选择了单选按钮,但集合不为空,但值 (DepartmentValues) 为空。
此外,这里也有类似的答案,但由于某种原因,它们都不适合我。任何帮助和指示方向表示赞赏。为一件简单的事情而失去理智。
还有一件事,我尝试创建局部视图,但现在仍然很幸运。我在网上阅读到将 for/foreach 循环放在视图中是一种不好的做法,并试图简化它,但这种方法也不起作用。
谢谢
【问题讨论】:
-
我不明白您为什么在 Post 操作中期望 2 个属性。您是否尝试过接收您的模型类?您在 Get 操作中发送的同一类。
标签: c# html asp.net-mvc