MVC中的验证远程属性无法正常工作

时间:2015-06-12 08:21:26

标签: jquery asp.net-mvc attr unobtrusive-validation

以下是我的代码呈现为HTML

的样子
<input data-val="true" data-val-remote="User name already exists. Please enter a different user name." data-val-remote-additionalfields="*.Name" data-val-remote-url="/OrchardLocal/Genealex.CRM.Core/Home/doesNameExist" data-val-required="Enter Name" id="typeName" name="TypeType.Name" type="text" value="">

这是我模型中的属性

[Remote("doesNameExist", "Home", ErrorMessage = "User name already exists. Please enter a different user name.")]
public string Name { get; set; }

我的控制器中的操作:

[HttpPost]
public JsonResult doesNameExist(string Name)
{
    var user = _contactBll.DoesTypeExist(Name);
    if (user)
    {
        return Json("Username is already exist", JsonRequestBehavior.AllowGet);
    }

    return Json(true, JsonRequestBehavior.AllowGet);
}

在我看来,我有:

@Html.TextBoxFor(model => model.TypeType.Name, new { id = "typeName" })

我还包括这样的脚本:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js" type="text/javascript"></script>
<script src="https://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>

然而,当我从文本框中离开焦点时,在输入字段中写了一些内容后,验证不会被触发。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我的错误如下:

[HttpPost]
public JsonResult doesNameExist(string Name)
{
    var user = _contactBll.DoesTypeExist(Name);
    if (user)
    {
        return Json("Username is already exist", JsonRequestBehavior.AllowGet);
    }

    return Json(true, JsonRequestBehavior.AllowGet);
}

而不是[HttpPost],我在控制器上需要[HttpGet]。切换它并且工作正常。