2016-12-28 44 views
0

私はメインビューでIEnumerableを使用し、部分モデルでは単一モデルオブジェクトを使用しました。モデルを@ html.partialに渡すには?

私はCRUD操作をしています:各行には編集/詳細/削除ボタンがあります。

以下は私のCSHTMLコードです:

@model IEnumerable<jQuery_CRUD.DAL.User> 
@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Address) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ContactNo) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id = item.UserId }, new { @class = "modal-with-form btn btn-default" ,href = "#modalEdit" }) | 
      @Html.ActionLink("Details", "Details", new { id = item.UserId }, new { @class = "modal-with-form btn btn-default", href = "#modalDetails" }) | 
      @Html.ActionLink("Delete", "Delete", new { id = item.UserId }, new { @class = "modal-with-form btn btn-default", href = "#modalDelete" })    



      <div id="modalEdit" class="modal-block modal-block-primary mfp-hide"> 
       @Html.Partial("Edit", item) 
      </div> 

      <div id="modalDetails" class="modal-block modal-block-primary mfp-hide"> 
       @Html.Partial("Details", item) 
      </div> 


      <div id="modalDelete" class="modal-block modal-block-primary mfp-hide"> 
       @Html.Partial("Delete", item) 
      </div> 




     </td> 
    </tr> 

編集/詳細をクリックする/削除するには、テーブル内の最初の行のみに影響します。

私が使用した部分図のモデルは次のとおりです。

@model jQuery_CRUD.DAL.User 

私はこれをどのように克服していますか?

私のコントローラ

public ActionResult Edit(int id = 0) 
    { 
     User user = db.User.Find(id); 
     if (user == null) 
     { 
      return HttpNotFound(); 
     } 
     return PartialView(user); 
    } 

    // 
    // POST: /User/Edit/5 

    [HttpPost] 
    public ActionResult Edit(User user) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(user).State = EntityState.Modified; 
      db.SaveChanges(); 
      TempData["Message"] = "Data has been updated successfully!"; 
      return RedirectToAction("Index"); 
     } 
     return View(user); 
    } 

答えて

0

限りあなたはMVCパターンを使用しているとして、あなたがしなければならないモデル(M)からそれらを取得し、通常の後に、(V)を表示するために、コントローラ(C)からのデータを渡します。だから、このアプローチでコントローラをコーディングする必要があります。

public ActionResult your_partial_view() 
{ 
    // Do your magic. Obtain data from model, handle them and after pass them to the view (Partial view in this case) 
    return PartialView("your_partial_view", jQuery_CRUD.DAL.User); 
} 

あなたは同様にあなたのモデルでは、あなたのクラスjQuery_CRUD.DAL.Userを定義する必要があります。

コントローラの名前は、パターンのView-layer-foldersにフォルダと同じである必要があります。メソッドは、ビューまたは部分ビューの名前でなければなりません。

あなたはそれについて学びたいのであれば、私はあなたにこれらのTUTOSお勧めします。一方ではofficial´s tutos

を、あなたは私のGitの中でいくつかのworking'sのデモを持って、それをチェックアウト:MVC working´s demo

レッツを私はあなたが持つことができる疑いを知っている。

乾杯。

+0

コントローラを追加しました。どうぞご覧ください。 – naveen

+0

コントローラの名前は何ですか?私が見た限りでは、EditControllerでなければならず、その中のメソッドも編集します...デバッグしましたか?最初の方法で入力していますか(初めてページを読み込むとき)? 2回目の方法(2回目の提出後)に入っていますか? –

+0

コントローラ名はUserControllerです – naveen

関連する問題