2017-02-01 1 views
0

Razor code-Modell Eigenschaftswert ändert sich nicht von HTML-Checkbox in Rasierapparat

@model SkyTracker.Models.Person 

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

Controller-Code-

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

Ob Kontrollkästchen aktiviert ist oder nicht markiert, Modell Eigenschaft immer false bleibt.

Was habe ich hier vermisst?

+1

Ändern Sie Ihren '@ Value' in' @ checked', dann erhalten Sie den Wert. –

+0

Zuerst entfernen Sie 'new {@Value = Model.IsActive}' (die Methode setzt den Wert korrekt und Sie sollten niemals das Attribut 'value' überschreiben, wenn Sie eine 'HtmlHelper'-Methode verwenden). Wenn der Anfangswert von 'false' ist, dann ist die Einstellung' value = "False" 'also wird das übergeben, wenn das Kontrollkästchen aktiviert ist (und nicht' @ checked' verwenden) –

Antwort

2

Sie shoudn't es so tun:

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

richtige Weg ist:

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

asp.net Mvc automatisch wird es markieren als aktiviert/deaktiviert ist abhängig von Modellwert

Verwandte Themen