コードなしで説明する言葉が見つからないので、これまでに得たものは次のとおりです。
表示: (ブートストラップ スイッチ)
[...]
@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;
}
基本的に、私がやろうとしているのは、ページの読み込み時です。すべての「スイッチ」が作成されたら、データベースを調べて、どのスイッチが true または false でなければならないかを確認し、それらを次のように設定します。正しい値...
しかし、それをしようとすると、id = 0 のときに NullReferenceException が発生します。これは正常なことだと思います。私のデータベースでは、id が 1、2、3、4 であるためです。 id、id = 4のときに同じエラーが発生します。いずれの場合も、trueに切り替わることはありません(DBではすべてtrueです)。手動で(.eachなしで)実行した場合にのみ機能します(ID 1-2-3の場合)、id:0-4はまだ私が望むことを実行できません。
それはforeachと一緒でしょうか?「@(item.Id + 1)」という ID を渡そうとしましたが、それでも 1 回 0 を取得したためです...
助けてくれてどうもありがとう!