Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态添加的复选框未绑定到IList模型_Javascript_Jquery_Asp.net Mvc 4_Checkbox_Model Binding - Fatal编程技术网

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);
});