这是主视图Dept_Manager_Approval.cshtml
,我在其中放置了一个显示数据的模式。
<td>
<i title="View Details">
@Ajax.ActionLink(" ", "ViewAccessStatus", new { id = item.request_access_id },
new AjaxOptions
{
HttpMethod = "Get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "edit-div",
}, new { @class = "fa fa-eye btn btn-success approveModal sample" })</i>
</td>
在这个只有模态的局部视图ViewAccessStatus.cshtml
中,我在这里插入了另一个局部视图。
<div>
<h2><span class ="label label-success">Request Creator</span> </h2>
@if (Model.carf_type == "BATCH CARF")
{
@Html.Partial("Batch_Requestor1", new {id= Model.carf_id })
}else{
<h4><span class ="label label-success">@Html.DisplayFor(model=>model.created_by)</span></h4>
}
</div>
控制器:
public ActionResult Batch_Requestor1(int id = 0)
{
var data = db.Batch_CARF.Where(x => x.carf_id == id && x.active_flag == true).ToList();
return PartialView(data);
}
Batch_Requestor1.cshtml
@model IEnumerable<PETC_CARF.Models.Batch_CARF>
@{
ViewBag.Title = "All Requestors";
}
<br/><br/>
<table class="table table-hover">
<tr class="success">
<th>
@Html.DisplayName("Full Name")
</th>
<th>
@Html.DisplayName("Email Add")
</th>
<th>
@Html.DisplayName("User ID")
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.fname) - @Html.DisplayFor(modelItem => item.lname)
</td>
<td>
@Html.DisplayFor(modelItem => item.email_add)
</td>
<td>
@Html.DisplayFor(modelItem => item.user_id)
</td>
</tr>
}
</table>
当我运行时,我有这个错误
传递到字典中的模型项的类型为'&lt;&gt; f__AnonymousType01 [System.Int32]',但此字典需要类型为'System.Collections.Generic.IEnumerable`1 [PETC_CARF.Models]的模型项。 Batch_CARF]”。
任何想法我将如何插入另一个局部视图?
答案 0 :(得分:3)
@Html.Partial()
呈现局部视图。它不会调用一个动作方法,而动作方法又会渲染部分动作。在你的情况下
@Html.Partial("Batch_Requestor1", new {id= Model.carf_id })
正在呈现名为Batch_Requestor1.cshtml
的部分视图,并向其传递由new {id= Model.carf_id }
(和匿名对象)定义的模型,但该视图需要一个IEnumerable<PETC_CARF.Models.Batch_CARF>
的模型。
相反,您需要使用
@Html.Action("Batch_Requestor1", new {id= Model.carf_id })
调用方法public ActionResult Batch_Requestor1(int id = 0)
并向其传递Model.carf_id
的值,然后将其呈现部分视图。