3

我很好奇如何执行以下操作。我有一个主要视图,其中包含有关支持案例的父数据。我还将使用部分视图显示 MTM 数据的子列表。我已经构建了一个 ViewModel 来为部分视图提供所需的数据。

这是我的视图模型:

public class CaseComplaintsViewModel
    {
    public string ComplaintCode { get; set; }
    public string ComplaintType { get; set; }
    }

ViewModel 基于来自以下两个领域模型的数据:

public class CaseComplaint
    {
    [Key]
    public int CaseComplaintID { get; set; }
    public int CasesID { get; set; }
    public int ComplaintCodeID { get; set; }
    public virtual Cases Cases { get; set; }
    public virtual ComplaintCode ComplaintCode { get; set; }
    }

public class ComplaintCode
        {
        public int ComplaintCodeID { get; set; }

        [MaxLength(50)]
        [Required(ErrorMessage="Complaint Code is required")]
        public string ComplaintCodeName { get; set; }

        [MaxLength(50)]
        [Required(ErrorMessage="Complaint Type is required")]
        public string ComplaintType { get; set; }

        public virtual ICollection<CaseComplaint> CaseComplaint { get; set; }

        }

很简单。

这是部分视图。

@model IEnumerable<cummins_db.ViewModels.CaseComplaintsViewModel>

<table width="100%">
<tr>
<th>Complaint Code</th>
<th>Complaint Description</th>
</tr>  
@foreach (var item in Model)
    {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.ComplaintCode )    
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ComplaintType)
    </td>

</tr>
    }
</table>

这个局部视图将在我的主要案例视图中使用。我还将使用 ajax 定期刷新这个局部视图。

所以我的问题是,当我的主要案例视图打开时,如何将正确的数据放入视图中?部分视图需要它自己的控制器还是我在 Cases 控制器中处理它?

4

1 回答 1

6

是的,它需要他自己的 Action 来处理数据发送给客户端。例如

public ActionResult ShowCaseComplaints(int someID)
{
    //creates a linq or database sql could something like
    /*var data = db.Complains.Find(someID).Select( x => new CaseComplaintsViewModel(){
        ComplaintCode = x.ComplaintCode,
        ComplaintType = x.ComplaintType
    }).ToList();*/

    var data = (from C in db.CaseComplaint 
                where C.CaseID == someID
                select C.ComplaintCode).ToList().Select( x => new CaseComplaintsViewModel(){
                     ComplaintCode = x.ComplaintCode,
                     ComplaintType = x.ComplaintType
                }).ToList();
    return PartialView("Your_Partial_View_Name", data);
}

请注意,我假设您有一个从其中创建 ViewModel 的基类。

要从您的主视图中渲染部分内容,您刚刚在主视图中调用,假设您的主视图是强类型的

@model CaseComplaint

<div id="complaintlist">
    @Html.Action("ShowCaseComplaints","yourController", new { someID = model.CaseID}
</div>
于 2012-07-13T18:36:54.450 回答