我正在使用ASP.NET MVC身份,当我添加形式为[email protected]的电子邮件时,会收到验证错误消息
用户名[email protected]无效,只能包含字母或数字。
如何更改验证,以便它可以接受电子邮件?
我的cshtml是:
@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { role = "form" }))
{
@Html.AntiForgeryToken()
<div class="reg-header">
<h2>Register</h2>
</div>
<fieldset>
@if (ViewBag.IsRegister)
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
}
<div class="margin-bottom-20">
@Html.LabelFor(m => m.RegisterViewModel.FirstName)<br />
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
@Html.TextBoxFor(m => m.RegisterViewModel.FirstName, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(m => m.RegisterViewModel.FirstName, "", new { @class = "text-danger" })
</div>
<div class="margin-bottom-20">
@Html.LabelFor(m => m.RegisterViewModel.LastName)<br />
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
@Html.TextBoxFor(m => m.RegisterViewModel.LastName, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(m => m.RegisterViewModel.LastName, "", new { @class = "text-danger" })
</div>
<div class="margin-bottom-20">
@Html.LabelFor(m => m.RegisterViewModel.Email)<br />
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
@Html.TextBoxFor(m => m.RegisterViewModel.Email, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(m => m.RegisterViewModel.Email, "", new { @class = "text-danger" })
</div>
<div class="margin-bottom-20">
@Html.LabelFor(m => m.RegisterViewModel.Password)<br />
<div class="input-group ">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
@Html.PasswordFor(m => m.RegisterViewModel.Password, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(m => m.RegisterViewModel.Password, "", new { @class = "text-danger" })
</div>
<div class="margin-bottom-20">
@Html.LabelFor(m => m.RegisterViewModel.ConfirmPassword)<br />
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
@Html.PasswordFor(m => m.RegisterViewModel.ConfirmPassword, new { @class = "form-control" })
<div class="clear"></div>
</div>
@Html.ValidationMessageFor(m => m.RegisterViewModel.ConfirmPassword, "", new { @class = "text-danger" })
</div>
<div class="row">
<div class="col-md-12">
<button class="btn-u" type="submit" name="command" value="Register">Register</button>
</div>
</div>
</fieldset>
}
这是我的控制器:
RegisterViewModel model = login.RegisterViewModel;
var user = new ApplicationUser() { UserName = model.Email, FirstName = model.FirstName, LastName = model.LastName, UserRole = UserRole.Rider };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
// Send an email with this link
// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
return RedirectToLocal(returnUrl);
//return RedirectToAction("Index", "Home");
}
else
{
ViewBag.ReturnUrl = returnUrl;
AddErrors(result);
}
默认UserValidator
是在使用UserManager
有一个属性AllowOnlyAlphanumericUserNames
被设置为true ..你将需要重写这个允许的特殊字符。可能的解决方案是像这样用自己的实现覆盖UserManager。
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store)
{
this.UserValidator = new UserValidator<ApplicationUser>(this) { AllowOnlyAlphanumericUserNames = false };
}
}
public class ApplicationUser : IdentityUser
{
//Custom Properties etc.
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句