如何使这个剃刀视图工作?

时间:2014-01-02 03:56:22

标签: asp.net-mvc-4

在我的MVC网络应用程序中,这是使用icollection对象的模型,

public class EmpProfile
{
    public int EmpProfileID { get; set; }
    public string EmpName { get; set; }
    public string EmpNum { get; set; }
    public string ManagerEditor { get; set; }
    public string DocCreatedBy { get; set; }

    public virtual ICollection<PerfPlan> PerfPlans { get; set; }
    public virtual ICollection<ProgReview> ProgReviews { get; set; }
 }

这是PerfPlan模型,其他模型ProgReviews与此类似。

public class PerfPlan
     {
        public int ID { get; set; }
        public int EmpProfileID { get; set; }
        public string EmpName { get; set; }
        public string EmpNum { get; set; }
        public string Title { get; set; }
        ....
         public virtual EmpProfile EmpProfile { get; set; }
    }

基本上,它构建了EmpProfile和PerfPlan,ProgReview之间的一对多关系。因此,一个EmpProfile有0个或多个Performance Plan和Progress Review数据(模型)。现在,在我的EmpProfile索引剃刀中,我想列出与每个EmpProfile相关的所有PerfPlan和ProgReview,我构建了这样的东西:

@model IEnumerable<PerfM.Models.EmpProfile>

<table>

@foreach (var item in Model) 
{
<tr class="@selectedRow">
<td >
        @Html.ActionLink(@item.EmpName, "Index", new { id = item.EmpProfileID  })

    </td>
</tr>
 //here I need to list all PerfPlan and ProgReview related to this EmpProfile and list under this row.

任何专家都可以帮我继续下面的代码吗? 非常感谢,

1 个答案:

答案 0 :(得分:1)

只需使用这样的简单foreach循环(在foreach循环内):

foreach(var plan in item.PerfPlans)
{
     // here you can access your PerfPlan properties like:
   <tr>
   <td> @plan.Id </td>
   <td> @plan.EmpName</td>
   <td> @plan.EmpNum </td>
   ...
   </tr>
}

foreach(var review in item.ProgReviews)
{
     ...
}

在您的控制器中,不要忘记包含您的收藏:

var profiles  = context.EmpProfiles.Include("PerfPlans").Include("ProgReviews");