2012-06-14 15 views
5

Ja próbuje wypełnić dane do mojego NCCMembershipUser z następującego kodu:Casting Błąd: Umieszczanie danych w Custom MembershipUser

string name = User.Identity.Name; 

NCCMembershipUser currentUser = (NCCMembershipUser)NCCMembershipProvider.GetUser(name, true); 

currentUser.Salutation = GenderSelect.SelectedValue; 
currentUser.FirstName = TextBoxFirstName.Text; 
currentUser.LastName = TextBoxLastName.Text; 
currentUser.Position = TextBoxPosition.Text; 
... 

try 
{ 
    NCCMembershipProvider u = (NCCMembershipProvider)Membership.Provider; 
    u.UpdateUser(currentUser); 
} 

Dostaję błąd „Odwołanie do obiektu jest wymagane dla nie- statycznego pola, metody lub właściwości „System.Web.Security.MembershipProvider.GetUser (string, bool)””

Gdybym zamiast używać Membership.GetUser() (bez napisu name), aby uzyskać dostęp do bieżącego użytkownika, daje mi problem z odlewaniem, a GetUser() wydaje się, że nie można go przesłonić en.

Edit "[A] NCC.App_Code.NCCMembershipProvider nie mogą być oddane do [B] NCC.App_Code.NCCMembershipProvider"

Błąd odlewania mogę to

Odpowiedz

1

The casting error I get is "[A]NCC.App_Code.NCCMembershipProvider cannot be cast to [B]NCC.App_Code.NCCMembershipProvider."

tego błędu, sprawdź, czy nie masz tej klasy w folderze App_Code jeśli tak, przenieść go do innego umieść nowy folder o nazwie Membership

To zajmie się kwestią przesyłania, ponieważ aplikacja tworzy 2 różne biblioteki DLL w 2 różnych miejscach w tymczasowych folderach asp.net.

+1

Zrobiłem folder o nazwie NCCMembership, więc nie byłoby żadnych problemów z obszarem członkowskim Membership w System.Web.Security. Ale to działało. Dziękuję Ci. – RyanJMcGowan

3

Błąd informuje, że metoda GetUser nie jest static, więc nie można jej wywołać bez instancji klasy NCCMembershipProvider.

Trzeba chwycić się z operatorem wcześniej w swojej metodzie:

string name = User.Identity.Name; 
NCCMembershipProvider u = (NCCMembershipProvider)Membership.Provider; 

NCCMembershipUser currentUser = (NCCMembershipUser)u.GetUser(name, true); 

currentUser.Salutation = GenderSelect.SelectedValue; 
currentUser.FirstName = TextBoxFirstName.Text; 
currentUser.LastName = TextBoxLastName.Text; 
currentUser.Position = TextBoxPosition.Text; 
// ... 

try 
{ 
    u.UpdateUser(currentUser); 
} 
+0

Powoduje to powrót do błędu dotyczącego obsady, o którym wspomniałem w pytaniu. "[A] NCC.App_Code.NCCMembershipProvider nie można przesłać do [B] NCC.App_Code.NCCMembershipProvider" – RyanJMcGowan

+0

Myślę, że będę musiał ominąć dostawcę i po prostu użyć kontroli źródła danych. Nikt nie wie, jak rozwiązać ten problem. To powinno być takie proste. – RyanJMcGowan