我正在处理我的项目的注册部分。一旦用户想要注册一个帐户,我希望用户也填写他们的地址,城市,邮政编码,名字,姓氏和一些其他的东西(在下面的模型中描述)。如何在ASP.NET MVC中编辑注册部分?
我该如何解决这个问题?
我试图改变如下代码:
~/Controllers/AccountController.cs
:
//
// GET: /Account/Register
[AllowAnonymous]
public ActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
我注意到有POST方法public ActionResult Register(RegisterModel model) {}
其中仅保存表称为UserProfile
和webpages_Membership
的用户名和密码中的代码的一部分,看起来像这样:
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
我不应该改变WebSecurity.CreateUserAndAccount()
函数,因为这只需要几个参数,一个用户名和一个密码以及其他的东西。
,但我却改变我的模型和视图以下几点:
~/Views/Account/Register.cshtml
:
@model Rent_a_Car_MVC.Models.RegisterModel
@{
ViewBag.Title = "Registreren";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<h4>Maak een account aan.</h4>
<hr />
@Html.ValidationSummary()
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.FirstName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.FirstName, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.LastName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.LastName, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Address, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Address, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.PostalCode, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.PostalCode, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.City, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.City, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Register" />
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
~/Models/AccountModel.cs
:
public class RegisterModel
{
[Required]
[Display(Name = "Gebruikersnaam")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "{0} moet minstens {2} letters bevatten.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Wachtwoord")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Bevestig wactwoord")]
[Compare("Password", ErrorMessage = "Wachtwoord en bevestigings wachtwoord komen niet overeen.")]
public string ConfirmPassword { get; set; }
[Required]
[Display(Name = "Voornaam")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Achternaam")]
public string LastName { get; set; }
[Required]
[Display(Name = "Adres")]
public string Address { get; set; }
[Required]
[Display(Name = "Postcode")]
public string PostalCode { get; set; }
[Required]
[Display(Name = "Woonplaats")]
public string City { get; set; }
}
我是不是做正确吗?我应该只需要更换控制器,如果是的话,我将如何处理这个问题?
[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve) - 关键字:**最小** –
您是否更新了数据库模型? –