我可以在“用户”数据库中添加字段吗? (会员CreateUser方法)

时间:2012-08-28 13:31:32

标签: asp.net asp.net-mvc-3 asp.net-membership

我是每个人,

我想在注册页面上添加一个或多个字段。我尝试将我的Membership.CreateUser()方法中的新字段添加到参数中,但它告诉我它不支持超过8个args。我能做什么 ?开发自己的自定义提供商?没有其他解决方案或技巧?

对不起我的英语,我从asp开始,所以你能告诉我的一切都很好。 谢谢

4 个答案:

答案 0 :(得分:1)

您必须自定义成员船舶提供商

我工作过,您可以阅读这篇文章:http://www.codeproject.com/Articles/165159/Custom-Membership-Providers

他帮助我完成工作

答案 1 :(得分:1)

我建议创建一个新表,例如UserDetail,并创建自己的查询,以便从/向此表读取/写入。因此,如果已创建用户,则在调用Membership.CreateUser()后,将自定义数据插入自定义表格。

您可以创建自己的自定义成员资格提供程序,但在我看来,这比它的价值更麻烦。

答案 2 :(得分:1)

您不必为了向User表添加字段而创建自定义提供程序(尽管它可能是正确的解决方案,具体取决于它,但并非强制性的。)

要向Users表添加字段,请转到SQL Server Management Studio,找到并展开aspnetdb。展开Tables并右键单击Users。选择“设计”,添加所需的字段,然后单击“保存”。就是这样!

编辑:实施个人资料


好的,我们假设您要为用户添加两个Profile属性:FirstName和LastName,两个字符串(或db语言中的nvarchar)

的Web.Config (名称和类型是默认值,您需要为aspnetdb设置连接字符串)

<profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider"
             type="System.Web.Profile.SqlProfileProvider"
             connectionStringName="ApplicationServices"
             applicationName="/"/>
      </providers>
      <properties>
        <add name="FirstName" type="string"/>
        <add name="LastName" type="string"/>
      </properties>
    </profile>

现在您已经配置了配置文件提供程序并定义了属性,您可以通过ProfileBase类使用它们。 例如,当新用户在您的站点注册时,除了Membership.CreateUser所需的用户名和密码之外,您还可以要求您的用户输入他们的名字和姓氏。一旦他们将表单发布回您的服务器,您就会这样处理它:

[HttpPost]
        public ActionResult CreateUser( ViewModel viewModel )
        {
            if (ModelState.IsValid)
            {
                    MembershipCreateStatus status;
                    var newUser = Membership.CreateUser( viewModel.UserName, viewModel.Password, viewModel.EmailAddress, null, null, true, null, out status );
                    if (status == MembershipCreateStatus.Success)
                    {
                        //set profile data
                        ProfileBase profile = ProfileBase.Create(viewModel.UserName);
                        profile["FirstName"] = viewModel.FirstName;
                        profile["LastName"] = viewModel.LastName;
                        profile.Save();
                    }

编辑配置文件数据与创建配置文件数据相同。

为用户获取个人资料数据同样简单:

var profile = ProfileBase.Create(userName);
var firstName = profile["FirstName"] as string;
var lastName = profile["LastName"] as string;

希望这有助于您前进!

答案 3 :(得分:0)

var profile = ProfileBase.Create(userName);
var firstName = profile["FirstName"] as string;
var lastName = profile["LastName"] as string;

你把这段代码放在哪里了?