2013-02-16 60 views
1

在我的控制器类内我有私有方法,它返回使用User.Identity.Name作为参数获取的记录用户,这一切都很好。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'

在编译时显示错误。

+0

你可以通过'User.Identity.Name'吗?或者你可以使用'PrincipalContect'来获得它,你需要传入当前用户,你可以在'Page Level'中获得它,如果你的方法需要'DomainName \\ UserName'中的用户名传递'Split' (“\\”)'方法的名称和传递字符串[1]'价值 – MethodMan 2013-02-16 20:36:24

回答

4

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

2

您无法通过静态方法访问您的基类实例成员。

3

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

GetLoggedUser()方法删除static

来自:

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

到:

private Account GetLoggedUser() 
{ 
    // your code 
} 
+0

'私人帐户GetLoggedUser(){}',如果OP不理解你..我学会了不承认事情大声笑 – MethodMan 2013-02-16 20:51:08

+0

@DJKRAZE更新:)) – bas 2013-02-16 20:56:03

+0

+2没有问题'bas'我只是说..我刚刚离开了一个职位,人们像字面上提供正确的答案,而且OP是像'我不' t理解'..这是我提到它的唯一原因..我已经很快学会了'SO'不要假设..大声笑你的答案是一个很好的顺便说一句,因为它实际上提供了正确的回应,加上你展示的OP为什么这是错的,他/她最初犯的错误 – MethodMan 2013-02-16 21:03:54

相关问题