我是每个人,
我想在注册页面上添加一个或多个字段。我尝试将我的Membership.CreateUser()方法中的新字段添加到参数中,但它告诉我它不支持超过8个args。我能做什么 ?开发自己的自定义提供商?没有其他解决方案或技巧?
对不起我的英语,我从asp开始,所以你能告诉我的一切都很好。 谢谢
答案 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;
你把这段代码放在哪里了?