转换错误:将数据插入Custom MembershipUser

时间:2012-06-14 19:37:16

标签: c# asp.net membership-provider

我正在尝试使用以下代码向我的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。”

2 个答案:

答案 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个不同位置。