2017-09-26 5 views
1

Ich habe eine wirklich einfache Frage. Ich habe ein Formular, in dem, wenn Sie das Kontrollkästchen aktivieren und das Formular abschicken, es den Wert auf wahr (es ist standardmäßig falsch). Im Moment funktioniert es nicht für mich. Also frage ich, wie soll ich das machen?ASP.NET MVC Change Database Wert, wenn das Kontrollkästchen aktiviert ist

Hier sind ein paar Dinge, wie ich sie mache. Es gibt einen Wert "IsConfirmed"

public virtual bool IsConfirmed {get;set;} 

Und ich habe eine einfache HttpPost-Methode.

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Edit([Bind(Include = "UserName,Id,Email")] ApplicationUser formuser, string id, string RoleId) 
    { 
     var role = new ApplicationUser() { Id = formuser.Id, Email = formuser.Email, IsConfirmed = formuser.IsConfirmed }; 
     await UserManager.UpdateAsync(role); 
     return RedirectToAction("Index"); 
    } 

Hier ist meine Ansicht

@model CPO.Models.ApplicationUser 
@{ 
ViewBag.Title = "Edit"; 
} 
@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 
@Html.ValidationSummary() 
@Html.HiddenFor(model => model.Id) 

<table class="table table-bordered table-hover"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.Email) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.UserName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.FirstName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.LastName) 
     </th> 
    </tr> 
     <tr> 
      <td> 
       @Html.HiddenFor(model => model.Email) 
       @Html.DisplayFor(model => model.Email) 
       @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" }) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.UserName) 
       @Html.DisplayFor(model => model.UserName) 
       @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" }) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.FirstName) 
       @Html.DisplayFor(model => model.FirstName) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.LastName) 
       @Html.DisplayFor(model => model.LastName) 
      </td> 
      <td> 
       @Html.DropDownList("RoleId", "Select Role") 
      </td> 
      <td> 
       @Html.EditorFor(model => model.IsConfirmed) 
      </td> 
      <td> 
       <input type="submit" value="Edit" class="btn btn-default"/> 
      </td> 
     </tr> 
</table> 
} 
@section Scripts { 

@Scripts.Render("~/bundles/jqueryval") 

} 

Seltsam, aber es funktioniert nicht, und ich habe keine Ahnung, warum, vielleicht habe ich etwas verpasst zu definieren, aber das Modell des bekommen es ist Wert als falsch, obwohl es ist überprüft.


Jede Hilfe sehr geschätzt wird, bitte ich machte sie in den Kommentaren zu schreiben Art sein, wenn ich Fehler gemacht und ich werde sie

+1

darunter ein Formular-Steuerelemente wenig Sinn, wenn Sie debuggen, wo * genau * ist der Wert verloren? Was ist in der POST-Anfrage enthalten? Was ist in dem Modellobjekt, das von der Controlleraktion empfangen wird? Was ist das Ergebnis von 'model.ToDomainModel()'? Was ist in dem Objekt "Kommission"? – David

+0

Können Sie Ihren kompletten Rasierkode auch zeigen? –

+0

Der Wert von 'model.IsConfirmed' ist 'wahr', wenn das Kontrollkästchen auf der Basis des angezeigten Codes aktiviert ist. Beziehen Sie sich auf den Wert von 'commission.IsConfirmed'? –

Antwort

3

Sie haben fixieren die IsConfirmed Eigenschaft von der Bindung durch ausgeschlossen Ihre Verwendung des BindAttribute

[Bind(Include = "UserName,Id,Email")] 

was bedeutet, dass nur die Werte für die Eigenschaften UserName binden, Id und Email

Entfernen Sie das Attribut, oder es die Eigenschaft Sie

[Bind(Include = "UserName, Id, Email, IsConfirmed")] 

Hinweis haben umfassen ändern auch Eigenschaften ausgeschlossen FirstName, LastName und RoleId aus der Bindung so für sie da

+0

Danke für Ihre Hilfe, Sie waren sehr hilfreich! – HighSepton

Verwandte Themen