2017-02-01 1 views
0

レイザーコード -モデルプロパティの値は、カミソリでHTMLチェックボックスから変更されていない

@model SkyTracker.Models.Person 

<form method="post" action="Edit"> 
    @Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive }) 
    <input type="submit" value="Update"/> 
</form> 

コントローラは、チェックボックスがオンまたはオフされているかどうか、モデルのプロパティは常にfalseのまま

[HttpPost] 
public ActionResult Edit(Person person) 
{ 
    var status = person.IsActive; //its always false. 
} 

をコード - 。

私はここで何を欠席しましたか?

+1

'@Value'を' @ checked'に変更すると、その値が取得されます。 –

+0

最初に 'new {@Value = Model.IsActive}'を削除します(このメソッドは値を正しく設定し、 'HtmlHelper'メソッドを使用するときは' value'属性をオーバーライドしないでください)。 'false'の初期値で' value = "False"を設定すると、チェックボックスがチェックされたときに送信されます( '@ checked'は使わないでください) –

答えて

2

あなたはそのようにそれを行うshoudn't:

@Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive }) 

正しい方法は次のとおりです。チェックするよう

@Html.CheckBoxFor(m=> m.IsActive) 

のasp.net MVCは自動的にそれをマークします/未チェックは、モデル値に依存

関連する問題