所以,我正在尝试对用户名和电子邮件使用自定义验证,但它正在运行但只提供一个红色框。它实际上并没有显示..这是我的代码
[Required]
[Display(Name = "User name")]
[System.Web.Mvc.Remote("UserExists", "Account", ErrorMessage = "UserName already exists, please pick another one.")]
[Editable(true)]
控制器...... public JsonResult UserExists(string UserName) {
var user = UserManager.FindByName(UserName);
return Json(!db.AspNetUsers.Any(x => x.UserName == UserName),
JsonRequestBehavior.AllowGet);
}
所以是的,它显示的是红色框,证明用户名存在,但实际上并没有显示错误消息。如果我要提交它将显示错误消息,否则不显示。 这是模型..
<script src="~/Scripts/jquery-2.0.3.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<fieldset>
@Html.AntiForgeryToken()
<h4>Create a new account.</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" })
@Html.ValidationMessageFor(m => m.UserName)
</div>
答案 0 :(得分:2)
这是您要实现的功能:
public JsonResult UserExists(string UserName) {
var user = UserManager.FindByName(UserName);
if (!db.AspNetUsers.Any(x => x.UserName == UserName))
return Json(true, JsonRequestBehavior.AllowGet);
return Json(string.Format("{0} is not available", UserName) , JsonRequestBehavior.AllowGet);
}
将您的远程标记更新为:
[Remote("UserExists", "Account")]
这只是删除了错误消息,除了真正的返回之外的任何其他内容都是发送回客户端的错误消息。
此处提供更多信息:
http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx