我正在尝试检索动态添加的复选框值。这就是我所做的
查看:
foreach (var item in ViewBag.List as List<m_valuation>)
{
<table>
<tr>
<td>Print</td>
<td>@Html.TextBox("Txt")</td>
<td>Codes With</td>
<td>@Html.CheckBox("Check")</td>
<td>@Html.Label("Codes",item.point_valuation)</td>
</tr>
</table>
}
<input type="submit" value="GenerateCodes" />
控制器:
public ActionResult PrintPointCodes(int DealNo)
{
List<m_valuation> model = db.m_valuation.ToList();
ViewBag.List = model;
return View();
}
[HttpPost]
public ActionResult PrintPointCodes(List<string> Txt,List<bool> Check)
{
List<bool> CheckedItems = new List<bool>();
for (int i = 0; i < Check.Count; i++)
{
CheckedItems[i] = Check[i].Equals(false);
}
return View();
}
返回的值带有true和false。不知道我哪里错了 请帮我! 提前致谢
答案 0 :(得分:0)
@Html.CheckBox
(和@Html.CheckBoxFor
)方法会渲染2个控件,<input type="checkbox" ..>
和<input type="hidden" value="false">
。原因是未选中的复选框不会回发,因此第二个隐藏的输入确保返回false
是未选中关联的(真实)复选框。以这种方式处理复选框(作为布尔值数组)将不起作用。如果您要手动渲染html,那么您只能获得true
个值,而您将无法确定在客户端上检查了哪些值。
要正确绑定您的媒体资源,请在for
循环中渲染您的控件,或使用自定义EditorTemplate
进行课程m_valuation
GET方法
public ActionResult PrintPointCodes(int DealNo)
{
List<m_valuation> model = db.m_valuation.ToList();
return View(model);
}
查看
@model List<m_valuation>
...
for (int i = 0; i < Model.Count; i++)
{
@Html.TextBoxFor(m => m[i].Txt)
@Html.CheckBoxFor(m => m[i].Check)
}
POST方法
[HttpPost]
public ActionResult PrintPointCodes(List<m_valuation> model)
{
//model will be correctly bound