2016-12-08 11 views
0

を持っている...渡されたモデルでは、私は非常に混乱の問題を持っている間違ったID

私は私が一緒にリンクを持つすべてのasp.netのIDユーザーをリストそのコントローラ上の「がUserController」と呼ばれるコントローラを持っています各ユーザーを編集します。すべてのユーザーを一覧表示するビューと、編集用に選択したユーザーの詳細を表示するビューも表示されます。しかし、更新ビューは機能しません。渡されたIDが、データベース内のどのユーザーとも一致していないことを確認すると、更新メソッドに渡されたモデルは、想定されていたモデルではありません。なぜかわかりません。

コントローラ

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(); 
    } 

編集ビュー

@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

あなたは、更新メソッドは動作しませんが、まだ編集ビューを投稿していると言っています。更新ビューはどうですか?また、 'user'を返すつもりはありませんか?したがって、 'return View(user)'を返します。 –

+0

まだ更新ビューを作成していません。編集ビューのページでは、更新メソッドに投稿して、ユーザーに一致しないIDを取得する場所を取得します....私は、渡して更新ビューを作成する前に、渡されたモデルが正しいことを確認したかっただけです。しかし、私はそのビューを作成していない場合でも、渡されたモデルは正しいはずですか? – MTplus

答えて

0

ビューにエンティティモデルを返すことはありません。必要なプロパティだけを持つビューモデルを作成し、代わりにそのオブジェクトを渡します。あなたは隠された出願時のuser.IDを追加する必要がビューにも

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 
} 

次の例を考えてみましょう。

関連する問題