从视图有条件地调用Remote方法以在MVC4中进行验证



我正在更新一个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获得类似的功能?

结束更新谢谢

您需要使用jQuery.validate.uno唐突来挂接您的标准验证规则,对于更复杂的自定义规则,您可以创建进行ajax调用的适配器,或者您的验证需要的任何适配器

前提是您的应用程序中已经有了所有正常的客户端验证。

1.在ViewModel中的PropertyName上添加Remote属性。

[Remote("ActionName","ControllerName")]公共字符串PropertyName{get;set;}

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

public JsonResult ActionName(字符串PropertyName){return Json(!PropertyName.Contains("disallowedstring",JsonRequestBehavior.AllowGet);}

有关更多详细信息,请参阅:"操作中的远程验证属性"部分:http://www.codeproject.com/Articles/249452/ASP-NET-MVC3-Validation-Basic

最新更新