ASP.NET MVC 4 でチェックボックスの値を取得する 質問する

ASP.NET MVC 4 でチェックボックスの値を取得する 質問する

私は ASP.NET MVC 4 アプリに取り組んでいます。このアプリには基本的なフォームがあります。私のフォームのモデルは次のようになります。

public class MyModel
{
    public string Name { get; set; }
    public bool Remember { get; set; }
}

私のフォームには次の HTML があります。

<input id="Name" name="Name" type="text" value="@Model.Name" />
<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember" />
<label for="Remember">&nbsp;Remember Me?</label>

フォームを投稿すると、モデルの Remember 値は常に false になります。ただし、モデルの Name プロパティには値があります。次の場所にブレークポイントを設定してこれをテストしました。

[HttpPost]
public ActionResult MyAction(MyModel model)
{
  Console.WriteLine(model.Remember.ToString());
}

わかりません。チェックボックスの値が設定されないのはなぜですか?

ベストアンサー1

@Html.EditorFor(x => x.Remember)

生成されます:

<input id="Remember" type="checkbox" value="true" name="Remember" />
<input type="hidden" value="false" name="Remember" />

仕組み:

  • チェックされていない場合checkbox、フォームはhidden値(false)のみを送信します。
  • チェックされている場合、フォームは2つのフィールド(falseとtrue)を送信し、MVCはtrueモデルのboolプロパティを設定します。

<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember" />

チェックされている場合、常にデフォルト値が送信されます。

おすすめ記事