2010-10-28 51 views
0

我使用的代碼,從nerddinner的例子。該方法將在控制器中調用時顯示數據庫中所有即將到來的晚餐的列表。限制查看數據庫事件到當前登錄的用戶.Net MVC

public IQueryable<Dinner> FindUpcomingDinners() 
{ 
    return from dinner in entities.Dinners 
      where dinner.EventDate > DateTime.Now 
      orderby dinner.EventDate 
      select dinner; 
} 

我本來以爲這樣的:

public IQueryable<Dinner> FindUpcomingDinners() 
{ 
    return from dinner in entities.Dinners 
      where dinner.EventDate > DateTime.Now && dinner.HostedBy == User.Identity.Name 
      orderby dinner.EventDate 
      select dinner; 
} 

會給我只是由當前登錄的用戶舉辦的晚宴,但是我得到三個錯誤:

  1. 代表'System.Func' 不帶1個參數

  2. 無法轉換lambda表達式到類型「串」,因爲它不是一個 委託類型

  3. 名「用戶」不會在目前情況下存在於

任何指針右方向,將不勝感激:)

當前上下文

回答

2

User.Identity.Name僅在控制器中可用。所以,你可能把它作爲參數傳遞給你的方法:

public IQueryable<Dinner> FindUpcomingDinners(string user) 
{ 
    return from dinner in entities.Dinners 
      where dinner.EventDate > DateTime.Now && dinner.HostedBy == user 
      orderby dinner.EventDate 
      select dinner; 
} 

而且從控制器動作中調用此方法時:

var upcomingDinners = dinnerRepository.FindUpcomingDinners(User.Identity.Name); 

還要確保用戶需要進行身份驗證來調用這個控制器操作([Authorize]屬性),或者如果匿名用戶試圖調用它,您可能會收到異常。

+0

不錯的達林,謝謝! – 109221793 2010-10-28 12:34:45

相關問題