我大家,
我想在我的注册页面上添加一个或多个字段。我尝试将我的新字段添加到我的 Membership.CreateUser() 方法的参数中,但它告诉我它不支持超过 8 个参数。我能做些什么 ?开发我自己的自定义提供程序?没有其他解决方案或技巧吗?
请原谅我的英语,我从 asp 开始,所以你能告诉我的一切都很好。谢谢
我大家,
我想在我的注册页面上添加一个或多个字段。我尝试将我的新字段添加到我的 Membership.CreateUser() 方法的参数中,但它告诉我它不支持超过 8 个参数。我能做些什么 ?开发我自己的自定义提供程序?没有其他解决方案或技巧吗?
请原谅我的英语,我从 asp 开始,所以你能告诉我的一切都很好。谢谢
您不必创建自定义提供程序即可将字段添加到 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;
希望这可以帮助您前进!
确切地说,您必须自定义您的会员船提供商
我工作过,你可以阅读这篇文章: http: //www.codeproject.com/Articles/165159/Custom-Membership-Providers
他帮助我工作
我建议创建一个新表,例如UserDetail
,并创建您自己的查询以读取/写入该表。Membership.CreateUser()
因此,如果已创建用户,则在调用后,将自定义数据插入自定义表中。
您可以创建自己的自定义会员提供程序,但在我看来,这比它的价值更麻烦。
var profile = ProfileBase.Create(userName);
var firstName = profile["FirstName"] as string;
var lastName = profile["LastName"] as string;
你把这段代码放在哪里了?