Jquery 在MVC4中有条件地从视图调用远程方法进行验证

Jquery 在MVC4中有条件地从视图调用远程方法进行验证,jquery,asp.net-mvc-4,unobtrusive-ajax,Jquery,Asp.net Mvc 4,Unobtrusive Ajax,我正在更新一个MVC2应用程序,使其在新的MVC4范式中工作。我试图弄清楚如何使用不引人注目的ajax调用方法来验证输入字段?我需要弄清楚某个值在数据库中是否是唯一的(由服务包装)。我已经制定了服务方法,我只需要能够调用它。。。通常我会这么做 HospitalFinNumber: { required: function (element) { debugger;

我正在更新一个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(方法名、控制器、ErrorMessage)]。但我只记得我有条件地调用这个远程方法。我使用相同的视图编辑或向数据库中添加新行。。。如果我只是编辑行,我不会检查字段是否唯一。如果我正在添加,我会检查字段是否唯一。我通过让控制器在视图上设置一个tempData变量来确定是否正在添加或编辑。。。您可以在上面的示例中看到它。。。仅当设置了该变量时,才需要该字段。然后我远程检查输入的值是否唯一。。。如何使用不引人注目的ajax获得类似的功能

ENDUPDATE
谢谢。

您需要使用jQuery.validate.unobtrusive来钩住您的标准验证规则,对于更复杂的自定义规则,您可以创建适配器来进行ajax调用或验证所需的任何东西,前提是您的应用程序中已经有了所有正常的客户端验证

1.在ViewModel中的PropertyName上添加远程属性

[远程(“ActionName”、“ControllerName”)] 公共字符串PropertyName{get;set;}

2.在控制器中创建上述定义的操作

public JsonResult ActionName(字符串PropertyName) { 返回Json(!PropertyName.Contains(“disallowedstring”,JsonRequestBehavior.AllowGet); }


有关更多详细信息,请查看:远程验证属性的作用-此处的部分:

当然可以,但如何操作?您是否有指向某个教程的链接?只需google jquery unobtrusive Validation,