0

我正在尝试获取当前登录用户的用户 ID。这是我的代码:

public int GetUserID(string _UserName)
    {
        using (var context = new TourBlogEntities1())
        {
            var UserID = from s in context.UserInfoes
                         where s.UserName == _UserName
                         select s.UserID;
            return  Int32.Parse(UserID.ToString()); //error is showing here

        }
    }

我使用这个从我的控制器调用该方法:

public ActionResult NewPost(NewPost model)
   {
       var Business = new Business();
       var entity = new Post();
       entity.PostTitle = model.PostTitle;
       entity.PostStory = model.PostStory;
       entity.UserID = Business.GetUserID(User.Identity.Name);



       Business.NewPost(entity);
       Business.ViewPost(entity);
       return View("ViewPost", model);

   }

错误显示为“输入字符串格式不正确”。请帮忙。谢谢。

4

2 回答 2

1

您的查询返回一个 IEnumerable。您只需要获取一条记录:

using (var context = new TourBlogEntities1())
{
    var userIds = from s in context.UserInfoes
                 where s.UserName == _UserName
                 select s.UserID;
    return userIds.Single();
}

顺便说一句,.Single()如果有超过 1 条记录符合条件,该方法将引发异常。希望您对数据库中的用户名字段有唯一的约束。

于 2012-10-10T09:05:05.110 回答
1
 CreatedBy = this.HttpContext.User.Identity.Name,
于 2012-10-10T09:37:44.763 回答