根据当前用户ID接收实体

时间:2013-03-08 08:29:55

标签: c# asp.net entity-framework asp.net-mvc-4

public ActionResult Index()
{
      var user = db.UserProfiles.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
      var allCategories = db.ProfitCategories
          .Where(x => x.IdUser.UserId==user)

我希望我的索引视图仅显示从当前用户写入的记录。我从这里获得了当前的userId

var user = db.UserProfiles.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);

x.IdUser.UserId是从db.ProfitCategoriesdb.UserProfiles的外键。编译时出现以下错误:无法应用运算符==类型intModels.UserProfiles

1 个答案:

答案 0 :(得分:3)

也许你应该尝试:

 public ActionResult Index()
 {
       var user = db.UserProfiles.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
       var allCategories = db.ProfitCategories
           .Where(x => x.IdUser.UserId==user.UserId)

您需要针对UserId检查UserId,而不是类。

修改

我认为你根本不需要得到用户:

public ActionResult Index()
{
   var allCategories = db.ProfitCategories
       .Where(x => x.IdUser.UserId==WebSecurity.CurrentUserId)

由于您已经在WebSecurity.CurrentUserId中保存了用户ID,因此您不需要从数据库接收用户(至少不是为了获取其ID)。当然,如果您需要其他操作(我不知道因为您提供了一段代码),请随时接收用户:)