2013-04-15 2 views
2

У меня есть 2 базы данных, использующие EF w/MVC4. Я искал все через SO, чтобы воспользоваться. Мне нужно вернуть список предупреждений на частичный вид. Однако оповещения должны быть отфильтрованы определенным именем пользователя с определенным идентификатором. Вид строго типизирован, и я хотел бы сохранить его таким образом.Передача PartialView с помощью LINQ

У меня есть запрос LINQ, возвращающийся к списку, и это список имен пользователей, связанных с конкретным идентификатором. Вы можете видеть во втором случае, где нужно искать два стола. Я хочу сделать это без класса viewmodel.

Вот код:

public PartialViewResult DashboardAlerts() 
    { 
     Database.SetInitializer<AlertsContext>(null); 
     AlertsContext db = new AlertsContext(); 

     Database.SetInitializer<MemberUsersContext>(null); 
     MemberUsersContext mdb = new MemberUsersContext(); 

     var members = new List<MemberUsers>(mdb.MemberUsers); 
     var alerts = new List<Alerts>(db.Alerts); 

     var query = from x in alerts 
        join y in members 
        on x.username equals y.username 
        where y.clubID == (int)Session["ClubID"] 
        select new { username = y.username}; 

     var list = query.ToList(); 

     switch (Session["RoleName"].ToString()) 
     { 
      case "GMC Admin": return PartialView(db.Alerts.ToList()); 
      case "Club Admin": return //return db.Alerts.ToList() that has only usernames from query.ToList(); 
      default: return PartialView(db.Alerts.Where(x => x.username == User.Identity.Name).ToList()); 
     } 
    } 

Bottom Line: Я хочу перекрестные ссылки db.Alerts только значения из запроса к спискам учётных собственности.

+0

Считаете ли вы использование ViewBag для отправки его на просмотр? –

+0

Могу ли я сохранить его строго набранным с помощью ViewBag? – ApolloSoftware

+2

Viewbag и модель - это отдельные способы передачи данных в представление и являются взаимоисключающими. Поскольку viewbag является динамическим объектом, вы можете просто добавить элемент в ViewBag в Action, а затем в режиме просмотра, чтобы узнать, существует ли это значение и что на нем делается код. –

ответ

1

С вашего вопроса вы хотите ограничить оповещения теми, где у вас есть имя пользователя в запросе. Похоже, что вы уже сделали, что, просто не выберите имя пользователя, но предупреждение вместо

var query = from x in alerts 
       join y in members 
       on x.username equals y.username 
       where y.clubID == (int)Session["ClubID"] 
       select x; 

, который вернет вам оповещение, а не список имен пользователей.

Смежные вопросы