Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用MySql和MVC 3上的成员资格向注册表添加更多字段_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Membership_Mysql Connector - Fatal编程技术网

Asp.net 使用MySql和MVC 3上的成员资格向注册表添加更多字段

Asp.net 使用MySql和MVC 3上的成员资格向注册表添加更多字段,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-membership,mysql-connector,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Membership,Mysql Connector,我创建了一个基于asp.NETMVC3和MySql的网站 我获得了MySQL.NET连接器的会员资格 因此,对于MVC3新项目的默认应用程序,我有一个工作注册表单和一个工作登录表单 但是。。。如何向注册表中添加更多字段? 我知道如何将它们添加到我的模型和页面中。。但是我如何让会员保留这些新的数据呢? 我必须自己制作数据库中的列吗?或者会员是否知道如何以某种方式自动创建它们 我只想再注册3个字段 谢谢请查看您的AccountModels.cs文件。它包含 public class Register

我创建了一个基于asp.NETMVC3和MySql的网站 我获得了MySQL.NET连接器的会员资格 因此,对于MVC3新项目的默认应用程序,我有一个工作注册表单和一个工作登录表单

但是。。。如何向注册表中添加更多字段? 我知道如何将它们添加到我的模型和页面中。。但是我如何让会员保留这些新的数据呢? 我必须自己制作数据库中的列吗?或者会员是否知道如何以某种方式自动创建它们

我只想再注册3个字段


谢谢

请查看您的AccountModels.cs文件。它包含

public class RegisterModel
{ 
   // User name, Email Adress, Password, Password confirmation already there

   // you can add something like below
    [Required]
    [Display(Name = "Nickname")]
    public string Nickname { get; set; }
}
一旦模型中有了新特性,就需要更新视图。在视图>帐户>注册表.cshtml中,您应该添加

        <div class="editor-label">
            @Html.LabelFor(m => m.Nickname )
        </div>
        <div class="editor-field">
            @Html.PasswordFor(m => m.Nickname )
            @Html.ValidationMessageFor(m => m.Nickname )
        </div>
如果要将该信息持久化到用户ASP.NET配置文件中,则需要在Web.config中提供该信息

<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
  <properties>
    <add name="Nickname" defaultValue="False" type="System.String" />
  </properties>
</profile>

要在配置文件中获取/设置属性,我建议您使用此解决方案

  • 创建一个名为
    UserDetails
  • 添加指向
    用户ID的字段
  • 你完了

    现在,您需要一些类来根据
    UserId
    检索这些字段。您还可以实现自己的
    MembershipProvider
    ,并添加一个类似
    GetUserDetail()
    的方法,该方法返回一个包含额外字段的对象


    这是基于ASP.NET的一篇官方文章:

    假设您想为年龄和性别创建字段。首先,您可以在相应的注册视图中创建注册的UI。这意味着为年龄和性别创建输入字段。然后在AccountController中转到Register视图,并在ApplicationUser对象(已声明)中添加年龄和性别字段。就这样


    关于这个的详细信息可以找到

    你写了这个://这将是一个很好的地方,你可以把你的代码放在模型上做一些事情。昵称,但那将是什么代码?。。。另一个数据库调用?这并没有解决我的问题,我如何才能使会员做到这一点。我读了一些关于档案库的东西。是吗?。。是2调用数据库的唯一方法吗?这取决于您希望如何处理数据持久性部分。您可以使用配置文件(有些人认为不够灵活),也可以初始化DataContext。执行
    userProfile.SetPropertyValue(“昵称”、“我的昵称”)后,请参阅更新的回答
    do
    userProfile.Save()
    用于持久性。在注册过程中,在何处编写代码以在UserDetails中插入值?因为我在Account/Register.aspx.cs中没有看到任何插入代码
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
      <properties>
        <add name="Nickname" defaultValue="False" type="System.String" />
      </properties>
    </profile>
    
    var userProfile = ProfileBase.Create(model.UserName);