i started a site based on asp.net MVC 3 and MySql i got the membership to work with the MySQL .NET connector so with the default application you get with a new project of mvc 3 i have a working register form and a working login form
but... how do i add more fields to the registration form? i know how to add them my model and to the page.. but how do i make the membership keep this new data ill get for the user? will i have to make the columns in the database by myself? or does membership knows how to create them automaticly somehow?
i only want 3 more fields for the registration...
thanks
take a look at your AccountModels.cs file. It contains
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; }
}
Once you have a new property in your model you need to update the view. In the Views > Account > Register.cshtml you should add
<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>
When you're done with that you need to update the registration logic to use your new property. Go to AccountController and find
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
//
// this would be a good place for you to put your code to do something with model.Nickname
//
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
If you want to persist that information to Users ASP.NET Profile, you need this in 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>
Then in your code - you can do
var userProfile = ProfileBase.Create(model.UserName);
to get/set your properties in Profile