2016-12-28 135 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