2016-12-28 60 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模式,則必須從控制器傳遞數據(C),以查看(V),通常從後模型(M)得到它們。所以,你必須控制器這種方法的代碼:

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,並且你的方法也是編輯的......你調試過了嗎?您是否輸入了第一種方法(首次加載頁面時)?你是否進入第二種方法(第二次提交後)? –

+0

控制器名稱是UserController – naveen