我已经在System.ComponentModel.DataAnnotations
中使用Remote执行了此操作。请参考下面的代码:
在ViewModel
(Properties
):
[Display(Name = "Email")]
[Remote("IsValidUserName", "Remote", AdditionalFields = "Email", HttpMethod = "Post")]
public string Email { get; set; }
这里的 “远程” 是Controller
名称和 “IsValidUserName” 我们Method
。如下图所示:
public class RemoteController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult IsValidUserName()
{
string email= Request.Form["Email"];
string message = "Email '"+ email+ "' is already taken";
if (!string.IsNullOrEmpty(email))
{
using (DbContext db = new DbContext())
{
if (!db.tb_Users.Any(x => x.email== email))
{
message = string.Empty;
}
}
}
if (message == string.Empty)
return Json(true, JsonRequestBehavior.AllowGet);
else
return Json(message, JsonRequestBehavior.AllowGet);
}
}
和View
页面,你必须使用这个象下面这样:
@Html.TextBoxFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
输出将是:
要记住的要点: 您必须使用以下JavaScripts
用于运行此:
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.min.jss"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
希望它可以帮助你。
感谢。
你尝试用'DataAnnotations'? –
@SunilKumar没有。想知道如何举个例子吗?最后,我没有那么普遍的解决方案,只是在将错误消息抛出到View之前进行修改。它可以工作,但对于更多的错误消息绝对不是一个好主意。 :/如果你知道更好的解决方案,将很感激。 – Ian
您是使用'Asp.Net Identity'还是'MembershipProvider'? – trailmax