我正在更新MVC2应用程序,以便它在新的MVC4范例中工作。我试图弄清楚如何调用一个方法来使用不显眼的ajax验证输入字段?我需要弄清楚某个值在数据库中是否是唯一的(由服务包装)。我已经将服务方法映射出来了,我只需要能够调用它...通常这就是我要做的。
HospitalFinNumber: {
required: function (element) {
debugger;
return '@isFlagSet' != 'True'; //$('AddEnc').val() === 'AddEnc';
},
minlength: 6,
remote: function () {
//debugger;
return {
url: '@Url.Action("ValidateHosFin", "EditEncounter")',
data: { hospitalFin: $('#HospitalFinNumber').val(), encflag: '@encflag' }
};
}
}
但我现在该怎么做?我知道我的其他功能不适用于不引人注目的ajax和验证?无论如何,我可以用这种方法调用我过去认识的这些函数吗? 的更新
我刚刚意识到你可以使用[Remote(MethodName,Controller,ErrorMessage)]来填充字段。但我只记得我有条件地调用这个远程方法。我使用相同的视图编辑或添加新行到数据库...如果我只是编辑行,我不检查该字段是否是唯一的。如果我要添加,请检查该字段是否唯一。我通过让控制器在视图上设置tempData变量来判断我是否正在添加或编辑...您可以在上面的示例中看到它...只有在设置了该变量时才需要该字段。我然后远程检查输入的值是否唯一...如何使用不显眼的ajax获得类似的功能?
ENDUPDATE 感谢。
答案 0 :(得分:1)
您需要使用jQuery.validate.unobtrusive来挂钩您的标准验证规则,对于更复杂的自定义规则,您可以创建进行ajax调用的适配器或任何需要验证的适配器
答案 1 :(得分:0)
前提是您已经在您的应用程序中使用了所有正常的客户端验证。
1.在ViewModel中的PropertyName上添加Remote属性。
[Remote(“ActionName”,“ControllerName”)] public string PropertyName {get;组; }
2.在Controller中创建上面定义的操作。
public JsonResult ActionName(string PropertyName) { 返回Json(!PropertyName.Contains(“disallowedstring”,JsonRequestBehavior.AllowGet); }
有关更多详细信息,请查看:操作中的远程验证属性 - 此处的部分:http://www.codeproject.com/Articles/249452/ASP-NET-MVC3-Validation-Basic