MVC 远程验证(唯一的电子邮件地址) [英] MVC Remote validation (unique email address)
问题描述
我目前正在处理用户输入电子邮件地址的注册页面.我希望每封电子邮件都是独一无二的.
I'm currently working on a registration page where the users enter their email address. I want every email to be unique.
这是我的 RegisterModel 的一部分:
This is a part of my RegisterModel:
[Required()]
[System.Web.Mvc.Remote("IsUserEmailAvailable", "Account")]
[EmailAddress()]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string Email { get; set; }
...
这是我的帐户控制器的一部分:
This is a part of my accountcontroller:
public JsonResult IsUserEmailAvailable(string UserEmail)
{
return Json(!db.UserProfiles.Any(User => User.UserName == UserEmail), JsonRequestBehavior.AllowGet);
}
这是我的看法:
<script src="~/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<hgroup class="title">
<h1>Create Account</h1>
</hgroup>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
</li>
<li>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</li>
<li>
@Html.LabelFor(m => m.ConfirmEmail)
@Html.TextBoxFor(m => m.ConfirmEmail)
</li>
</ol>
<input type="submit" value="Registrera" />
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
如果我删除 [System.Web.Mvc.Remote("IsUserEmailAvailable", "Account")] 一切都很好,除了电子邮件地址不会是唯一的.有了它,当我按下提交时,什么也没有发生.
If I remove the [System.Web.Mvc.Remote("IsUserEmailAvailable", "Account")] everything is fine except the emailaddress wont be unique. With it, when I press the Submit, nothing happens.
我错过了什么吗?
推荐答案
@Daniel J.G.是正确的.在函数中添加 [AllowAnonymous] 使其可访问.
@Daniel J.G. is correct. Adding [AllowAnonymous] to the function makes it accessible.
这篇关于MVC 远程验证(唯一的电子邮件地址)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!