我对MVC比较陌生,我开始使用visual studio 2013(Express)中的默认MVC项目模板。 我修改了视图以满足我的需要(暂时),然后按this tutorial向用户注册过程添加3个新字段。我在教程中添加了BirthDate和Email,第三个:FirstName。所有东西都建立并发布得很好。
在此之后,我将发布的网站上传到我的域here并在Chrome中进行了测试。所有页面都正确加载,但是当我尝试注册用户时,我会进入“错误”页面。我检查了JS控制台,唯一的条目是:event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
以下是我的C#类的代码,如上面的教程所示:
帐户/注册视图(新字段):
<div class="form-group">
@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">@Html.TextBoxFor(m => m.Email, 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.TextBoxFor(m => m.FirstName, new { @class = "form-control" })
</div>
帐户ViewModel(注册ViewModel新字段):
[Required]
[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }
[Required]
[Display(Name = "Email Address")]
public string Email { get; set; }
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
身份模型(ApplicationUser Method):
public class ApplicationUser : IdentityUser
{
public DateTime BirthDate { get; set; }
public string Email { get; set; }
public String FirstName { get; set; }
}
帐户控制器(帖子:注册方法):
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName, BirthDate = model.BirthDate, Email = model.Email, FirstName = model.FirstName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
如果您认为您知道导致错误页面的原因(我会将其保留,以便您自己查看)或者您知道我如何找出具体错误,请您告诉我。任何帮助将不胜感激。感谢。
更新1:我在登录时遇到了相同的错误pag,而不是被告知用户名不在数据库中。这是否意味着发生?
更新2:它在本地运行良好。