1

我大家,

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

请原谅我的英语,我从 asp 开始,所以你能告诉我的一切都很好。谢谢

4

4 回答 4

2

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

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

编辑:实施配置文件


好的,假设您要向用户添加两个 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;

希望这可以帮助您前进!

于 2012-08-28T13:58:13.320 回答
1

确切地说,您必须自定义您的会员船提供商

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

他帮助我工作

于 2012-08-28T13:33:06.803 回答
1

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

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

于 2012-08-28T13:35:38.067 回答
0
var profile = ProfileBase.Create(userName);
var firstName = profile["FirstName"] as string;
var lastName = profile["LastName"] as string;

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

于 2012-09-24T18:52:10.263 回答