我使用远程验证登记我的asp.net MVC 3广告应用程式(C#)期间检查用户名的可用性。
我使用MVC远程属性验证为:
[Remote("IsUserNameAvailable", "User")]
public string UserName { get; set; }
当我回到这一点:
return Json(true, JsonRequestBehavior.AllowGet);
然后,我想执行类似设置隐藏字段的值,这是从操作返回或显示绿色图标的图像。 我想也与真正的回归ID。
如何实现这个东西呢?
总之,我想要做的成功的东西。
实现的方法之一就是从验证动作添加自定义HTTP响应头:
public ActionResult IsUserNameAvailable(string username)
{
if (IsValid(username))
{
// add the id that you want to communicate to the client
// in case of validation success as a custom HTTP header
Response.AddHeader("X-ID", "123");
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json("The username is invalid", JsonRequestBehavior.AllowGet);
}
现在,在客户端上,我们显然有一个标准的形式,为用户名的输入字段:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.UserName)
@Html.ValidationMessageFor(x => x.UserName)
<button type="submit">OK</button>
}
现在拼图的最后一块是一个连接complete
处理程序的remote
上的用户名外地规则:
$(function () {
$('#UserName').rules().remote.complete = function (xhr) {
if (xhr.status == 200 && xhr.responseText === 'true') {
// validation succeeded => we fetch the id that
// was sent from the server
var id = xhr.getResponseHeader('X-ID');
// and of course we do something useful with this id
alert(id);
}
};
});