Javascript 动态添加的复选框未绑定到IList模型
我有一个视图为Javascript 动态添加的复选框未绑定到IList模型,javascript,jquery,asp.net-mvc-4,checkbox,model-binding,Javascript,Jquery,Asp.net Mvc 4,Checkbox,Model Binding,我有一个视图为IList弹出一个表,其中T如下所示: public class ModelType { public int EntityId { get; set; } public string Description { get; set; } public bool RequiresComment { get; set; } } Razor代码(为简洁起见被截断): @model-IList 描述 需要评论 @对于(var i=0;im[i].EntityId)
IList
弹出一个表,其中T
如下所示:
public class ModelType
{
public int EntityId { get; set; }
public string Description { get; set; }
public bool RequiresComment { get; set; }
}
Razor代码(为简洁起见被截断):
@model-IList
描述
需要评论
@对于(var i=0;im[i].EntityId)
@Html.TextBoxFor(m=>m[i].Description)
@Html.CheckBoxFor(m=>m[i].requirecomment)
}
然后,我有一些jQuery来处理“添加行”单击事件:
$("#addRowButton").click(function(){
var index = $("#theTable tbody tr").length;
var newRow = '<tr><input type="hidden" name="[' + index + '].EntityId" value="0" />' +
'<td><input type="text" name="[' + index + '].Description" style="width: 98%" /></td>' +
'<td style="text-align: center;"><input type="checkbox" name="[' + index + '].RequiresComment" />' +
'<input name="[' + index + '].RequiresComment" type="hidden" value="false" /></td></tr>';
$("#theTable tbody tr:last").after(newRow);
});
$(“#添加行按钮”)。单击(函数(){
var指数=$(“#表体tr”)。长度;
变量newRow=''+
'' +
'' +
'';
$(“#表体tr:last”)。在(新行)之后;
});
当我摆弄柱子时,桌子上的一行被完美地添加了起来,一切看起来都很好(据我所知)。但由于某种原因,如果添加了新行,并且在新添加的行上选中了“requirecomment”字段,则模型绑定器仍然会显示requirecomment
值false
在每个人都提到或向我指出关于模型绑定动态生成的HTML元素的其他问题之前,让我说我已经用其他类型的
元素成功地完成了几次。只是复选框
似乎不起作用。我曾尝试向元素添加ID,但在Fiddler为从第一次视图调用加载的每个已发布字段添加
的过程中遇到了麻烦,但我无法获得实际检查为将true
作为提交到模型绑定器的新行。我做错了什么?您生成的复选框缺少值
参数,在您的情况下,应将其设置为true
据我所知,提交时只提交复选框值。因此,MVC总是创建一个隐藏字段,以确保始终提交未选中复选框的值。尽管复选框通常用于布尔值,但该值也可以是文本或数字。生成的复选框缺少值
参数,在您的情况下,应将其设置为真
据我所知,提交时只提交复选框值。因此,MVC总是创建一个隐藏字段,以确保始终提交未选中复选框的值。尽管复选框通常用于布尔值,但该值也可以是文本或数字。生成的复选框缺少value参数,在您的情况下应将其设置为“true”。就我所记得的,ob submit only checked checkbox值是提交的,因此MVC还创建了一个隐藏字段,以确保始终提交未选中复选框的值,因为该值也可以是文本或数字。@developer10214,啊哈,是的,就是这样。增加价值=真正有效。你应该回答这个问题,这样我才能投票并接受。我把我的评论作为答案。我很乐意提供帮助。您生成的复选框缺少value参数,在您的情况下应将其设置为“true”。就我所记得的,ob submit only checked checkbox值是提交的,因此MVC还创建了一个隐藏字段,以确保始终提交未选中复选框的值,因为该值也可以是文本或数字。@developer10214,啊哈,是的,就是这样。增加价值=真正有效。你应该回答这个问题,这样我才能投票并接受。我把我的评论作为答案。我很乐意帮忙。
$("#addRowButton").click(function(){
var index = $("#theTable tbody tr").length;
var newRow = '<tr><input type="hidden" name="[' + index + '].EntityId" value="0" />' +
'<td><input type="text" name="[' + index + '].Description" style="width: 98%" /></td>' +
'<td style="text-align: center;"><input type="checkbox" name="[' + index + '].RequiresComment" />' +
'<input name="[' + index + '].RequiresComment" type="hidden" value="false" /></td></tr>';
$("#theTable tbody tr:last").after(newRow);
});