2013-02-16 61 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

相關問題