2016-12-08 6 views
0

ich ein sehr verwirrendes Thema haben ...bestanden Modell von asp.net identiy Benutzer falsch id

Ich habe einen Controller „Userscontroller“ auf diesem Controller ich alle asp.net Identität Benutzer zusammen mit einem Link-Liste genannt um jeden Benutzer zu bearbeiten. Die Ansicht, in der alle Benutzer aufgeführt sind, und die Ansicht, die Details zum ausgewählten Benutzer anzeigt, werden ebenfalls angezeigt. Aber die Update-Ansicht funktioniert nicht. Das übergebene Modell an die Update-Methode ist nicht das, was es sein soll ... wenn ich mir die übergebene ID anschaue, stimmt sie mit keinem Benutzer in der Datenbank überein ... Ich habe keine Ahnung warum?

-Controller

public ActionResult All() 
    { 
     var allUsers = _context.Users.ToList(); 
     return View(allUsers); 
    } 

    public ActionResult Edit(string userId) 
    { 
     var user = _userManager.FindById(userId); 
     return View(user); 
    } 
    public ActionResult Update(ApplicationUser model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = _userManager.FindById(model.Id); 
      user.IsActive = model.IsActive; 
      _userManager.Update(model); 

     } 
     return View(); 
    } 

Edit-Ansicht

@using (Html.BeginForm("Update", "Users", FormMethod.Post, new { name = "form_section_search_id_mls" })) 
{ 
<div class="row"> 
    <div class="col-lg-12"> 

     <div class="row"> 
      <div class="col-lg-12"> 
       <h3 class="title_contanier">Aktiv: </h3> 
       <div class="where-location"> 
        @Html.CheckBoxFor(model => model.IsActive) 
       </div> 
      </div> 
     </div> 
      <!-- Begin .row --> 
      <div class="row"> 
       <div class="col-lg-12"> 
        <button type="submit" class="btn_submit_quick_search btn_submit_search pull-right" id="submitBtn" name="btn_submit_section_search_id_mls">Update user</button> 
       </div> 
      </div> 
      <!-- End .row --> 

     </div> 
</div> 
} 
+0

Sie sagen, dass die Update-Methode nicht funktioniert, aber Sie noch die Bearbeitungsansicht veröffentlichen .. Wie sieht es mit der Update-Ansicht? Und wirst du den 'Benutzer' nicht zurückgeben? Also 'return View (Benutzer)'; –

+0

Ich habe die Update-Ansicht noch nicht erstellt. Auf der Seite der Bearbeitungsansicht poste ich die Update-Methode, und das ist, wo ich eine ID bekomme, die keinem Benutzer entspricht .... Ich wollte nur überprüfen, ob das übergebene Modell korrekt ist, bevor ich fortfahren und die Update-Ansicht erstellen. Aber selbst wenn ich diese Ansicht nicht erstellt habe, sollte das bestandene Modell korrekt sein. – MTplus

Antwort

0

nie Entität Modelle zur Ansicht zurückzukehren. Erstellen Sie immer ein Ansichtsmodell mit den gewünschten Eigenschaften, und übergeben Sie dieses Objekt stattdessen. Betrachten Sie folgendes Beispiel:

public class UpdateUserViewModel 
{ 
    public string ID {get; set; } 
    // put properties that user could update 
    public bool IsActive {get; set; } 
} 

public ActionResult Edit(string id) 
{ 
    var user = _userManager.FindById(id); 
    return View(new UpdateUserViewModel 
    { 
     ID=user.Id, 
     IsActive=user.IsActive 
    }); 
} 

public ActionResult Update(UpdateUserViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var user = _userManager.FindById(model.ID); 
     user.IsActive = model.IsActive; 
     _userManager.Update(user); 
    } 
    // rest of codes 
} 

Auch in der Ansicht, die Sie user.ID hinzufügen müssen als angemeldet versteckt.

@Html.HiddenFor(model => model.ID) 
@Html.CheckBoxFor(model => model.IsActive) 
Verwandte Themen