私はmvc3に取り組んでいます。NameとIsSelectという 2 つのプロパティを含む 1 つのモデルを作成しました。
ここにあります。
public class DemoModel
{
public string Name { get; set; }
public bool? IsSelect { get; set; }
}
このモデルをビューに渡します。
public ActionResult checkbox()
{
DemoModel model = getdemoModel();
return View(model);
}
[HttpPost]
public ActionResult checkbox(DemoModel model)
{
ModelState.Clear();
return View(model);
}
public DemoModel getdemoModel()
{
DemoModel demoModel = new DemoModel();
demoModel.Name = "ABC";
demoModel.IsSelect = null;
return demoModel;
}
これが私の見解です。
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>DemoModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.IsSelect)
</div>
<div class="editor-field">
@Html.CheckBoxFor(model => model.IsSelect.Value)
@Html.ValidationMessageFor(model => model.IsSelect)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
これを実行すると、エラー、つまり@Html.CheckBoxFor(model => model.IsSelect.Value)
オンラインになります。
Null 許容オブジェクトには値が必要です。
しかし、IsSelect 値を設定すると正常false
に動作します。ただし、 IsSelect プロパティの値は返されません。コントローラーに null 値を返します。これは非常に単純な問題だと思いますが、何かが欠けています。では、どのように null 値を処理できます@Html.CheckBoxFor
か? およびその値をコントローラーに返すにはどうすればよいですか?