我在ASP.NET模型中有一个FieldItems字典,这个字典的值如下所示。
年龄 - 复选框,姓名 - 文字,公司 - 文字
在我的视图文件中,我正在根据字典中提供的键值对创建控件。
<div class="row cloneMe">
<table>
@foreach (var item in Model.FieldItems)
{
<tr>
@if (item.Value == "checkbox")
{
<td>@item.Key</td>
<td> <input class="associationCheckbox" type="@item.Value" name="@item.Key" value="false" placeholder="@item.Key" /></td>
}
else if (item.Value == "number")
{
<td>@item.Key</td>
<td> <input type="number" name="@item.Key" value="0" ng-required="true" placeholder ="@item.Key" /> </td>
}
else
{
<td>@item.Key</td>
<td> <input type="text" name="@item.Key" value="" ng-required="true" placeholder ="@item.Key" /> </td>
}
</tr>
}
</table>
</div>
<span>
<button type="button" id="associationAdd" class="btn btn-success" style="float:none;cursor:pointer" ng-click="RemoveWidget()">AddPerson</button>
</span>
<span>
<button type="button" id="associationRemove" class="btn btn-danger" style="float:none;cursor:pointer" ng-click="AddWidget()">Remove</button>
</span>
添加到previousone,我可以根据按钮点击包含/删除所选字段,如下面的代码所示。
$("#associationAdd").on("click", function () {
$(".cloneMe:last").clone(true).insertAfter(".cloneMe:last");
});
$("#associationRemove").on("click", function () {
if ($(".cloneMe").length > 1) {
$(".cloneMe:last").remove();
}
});;
在ASP.NET页面上添加我的控件后,我正在读取控件值。
[HttpPost]
public ActionResult Index(FormCollection formCollection)
{
foreach (var key in formCollection.Keys)
{
var value = formCollection[key.ToString()];
}
}
点击提交按钮,我可以阅读姓名和年龄值。但是,我只能选中复选框值。 如果我有三个复选框并且都未选中,则复选框的键不会显示在Acton Result的formCollection中。
我尝试了以下方法设置复选框状态但没有结果。
$("input:checkbox[class=associationCheckbox]").each(function () {
if ($(this).attr('checked')) {
$(this).val('true');
} else {
$(this).val('false');
}
});
答案 0 :(得分:1)
为了使用jquery使用复选框的checked属性:
<?php include 'connection.php';?>
如果您使用的是早于1.6的jquery版本,请使用
$(this).prop('checked', true);
要检查是否选中了复选框,请使用:
$(this).attr('checked', 'checked');
<强> JSFIDDLE 强>