User.Identity.Name非静态字段需要对象引用

时间:2013-02-16 20:32:17

标签: c# asp.net

在我的控制器类中,我有私有方法,它返回使用User.Identity.Name作为参数获取的记录用户,这一切都很好。

private static Account GetLoggedUser()
{ 
   AccountService accService = new AccountService();
   Account userAccount = accService.GetAccountByUsername(User.Identity.Name);
   return userAccount;
}

public ActionResult Edit()
{
   var userAccount = GetLoggedUser();
...
}

问题是我在第User.Identity.Name

上收到此错误
  

非静态字段需要对象引用,   方法或属性'System.Web.Mvc.Controller.User.get'

编译时显示错误。

3 个答案:

答案 0 :(得分:4)

您正在静态方法中调用非静态对象/属性,它们看起来在同一个类中。你需要有一个类的实例才能使用它。或者将方法更改为非静态。

答案 1 :(得分:3)

您正在以静态方法检索控制器的属性...

删除static方法

中的GetLoggedUser()

从:

private static Account GetLoggedUser()
{
    // your code
}

为:

private Account GetLoggedUser()
{
    // your code
}

答案 2 :(得分:2)

您无法以静态方法访问基类实例成员。