0

我正在更新一个 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 谢谢。

4

2 回答 2

1

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

于 2012-09-11T11:55:28.513 回答
0

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

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

[Remote("ActionName", "ControllerName")] public string PropertyName { get; 放; }

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

公共 JsonResult ActionName(string PropertyName) { return Json(!PropertyName.Contains("disallowedstring", JsonRequestBehavior.AllowGet); }

有关更多详细信息,请查看:Remote Validation Attribute in Action - 此处的部分:http: //www.codeproject.com/Articles/249452/ASP-NET-MVC3-Validation-Basic

于 2012-12-11T22:29:36.147 回答