没有代码我找不到可以解释的词,所以这是我到目前为止得到的:
查看:(引导开关)
[...]
@foreach (var item in Model)
{
<tr>
<td>
<input class="my-checkbox" type="checkbox" name="my-checkbox" id="@(item.Id)" data-handle-width="100" data-on-text="Activer" data-off-text="Désactiver" data-size="small" data-on-color="success">
</td>
</tr>
}
[...]
<script type="text/javascript">
var isEnableUrl = '@Url.Action("IsEnabledMaterial", "MaterialType")';
$("[name='my-checkbox']").bootstrapSwitch();
</script>
Javascript:
$(document).ready(function () {
$('.my-checkbox').each(function (index) {
$.ajax({
type: 'POST',
url: isEnableUrl,
data: { 'id': index },
success: function (result) {
$('.my-checkbox').prop('checked', result);
},
error: function (e) {
swal("Error", "Can't modify that element. ", "error");
}
});
});
});
然后我的控制器:
[HttpPost]
public virtual bool IsEnabledMaterial(int id)
{
var materialType = materialTypeRepository.GetById(id);
return materialType.Enable;
}
所以基本上,我想要做的是在页面的负载上,当我所有的“开关”被创建时,我想去查看我的数据库,看看哪个开关必须是真或假并将它们设置为正确的价值...
但是当我试图这样做时,当 id = 0 时,我会得到一个 NullReferenceException。我猜这是正常的,因为在我的数据库中,id 是 1、2、3 和 4。但是如果我增加 1 id,当 id = 4 时,我得到相同的错误。在每种情况下,它们都没有切换为 true(它们在数据库中都是 true)。如果我手动(没有.each)它只会工作(对于ids 1-2-3),id:0-4仍然无法做我想做的事。
可能与foreach有关吗?因为我尝试传递 id "@(item.Id + 1)" 并且仍然得到一个 0 一次......
非常感谢您的帮助!