我正在尝试使用以下代码向我的NCCMembershipUser
填写数据:
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);
}
我收到错误“非静态字段,方法或属性需要对象引用'System.Web.Security.MembershipProvider.GetUser(string,bool)'” < / p>
如果我改为使用Membership.GetUser()
(没有name
字符串)来访问当前用户,则会出现转换错误,并且GetUser()
似乎无法覆盖。
编辑:
我得到的投射错误是“[A] NCC.App_Code.NCCMembershipProvider无法转换为[B] NCC.App_Code.NCCMembershipProvider。”
答案 0 :(得分:3)
该错误告诉您GetUser
方法不是static,因此如果没有NCCMembershipProvider
类的实例,则无法调用它。
您必须先在方法中抓住提供商:
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);
}
答案 1 :(得分:1)
我得到的投射错误是“[A] NCC.App_Code.NCCMembershipProvider 无法转换为[B] NCC.App_Code.NCCMembershipProvider。“
对于此错误,请确认您的App_Code
文件夹中没有该类,如果是,请将其移至其他位置,例如名为Membership
的新文件夹
这将解决投射问题,因为应用程序正在将2个不同的DLL编译到临时asp.net文件夹中的2个不同位置。