0

我正在使用entity frame work. 我使用 3 个表创建了一个函数。

这是我的代码:

public static IQueryable GetMenuContent()
{            
    string roleName ="ADMIN"

    var query1 = from ua in db.USER_ACCESS
                 join p in db.PAGES on ua.PAGE_ID equals p.PAGE_ID
                 join r in db.ROLES on ua.ROLE_ID equals r.RoleId
                 where (r.RoleName == roleName)
                 select new
                 {
                     tuserAccess = ua,
                     tpage = p,
                     trole = r,
                 };            

    return query1;
}

所以在我的母版页中,我需要检查USER_ACCESS表格 -> PAGE_NAME

所以我尝试这样

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (((DAL.PAGES)(item)).PAGE_NAME)
      {
           case "details":
                if (((DAL.USER_ACCESS)(item)).ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}

但它不起作用..我该怎么做..

4

2 回答 2

0

尝试修改方法如下。您的匿名对象的属性 accsing 已更改。

((DAL.t_PAGES)(item)).tpage.PAGE_NAME ((DAL.USER_ACCESS)(item)).tuserAccess.ACC_STATUS

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (((DAL.t_PAGES)(item)).tpage.PAGE_NAME)
      {
           case "details":
                if (((DAL.USER_ACCESS)(item)).tuserAccess.ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}
于 2013-09-09T06:59:11.293 回答
0

在您的情况下,您应该使用导航属性而不是连接。

但在你的情况下,你应该重写你的 foreach:

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (item.tpage.PAGE_NAME)
      {
           case "details":
                if (item.tuserAccess.ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}
于 2013-09-09T06:43:54.447 回答