asp.net MVC4中的条件验证

Sof*_*ant 9 jquery-validate asp.net-mvc-4

我希望能够根据调用视图的控制器启动一些验证功能......我将在ViewState中设置一个变量或者其他东西,这将帮助我知道调用该视图的控制器.

换句话说,如果设置了某个变量,我希望验证是必需的...当我把Jquery放入我的代码时,我在MVC2中的使用方式......

HospitalFinNumber: {
                    required: function (element) {
                        debugger;
                        return '@isFlagSet' != 'True'; 
                    },
                    minlength: 6,
                    remote: function () {
                        //debugger;
                        return {
                            url: '@Url.Action("ValidateHosFin", "EditEncounter")',
                            data: { hospitalFin: $('#HospitalFinNumber').val(), encflag: '@encflag' }
                        };
                    }
                }
Run Code Online (Sandbox Code Playgroud)

你看我在那里做什么.如果设置了某个变量,则只需要验证...在这种情况下,变量isFlagSet ...然后我将设置min Length并调用远程函数以确保该值是唯一的.

在所有情况下我都不想这样做.

从我到目前为止所读到的所有内容来看,没有明确的方法可以使用不显眼的ajax来实现这一目标吗?我错了,有没有办法可以做到这一点?如果没有,我怎样才能将常规的旧jquery验证放入我的代码中?

Dar*_*rov 11

ASP.NET MVC 3使用jquery unobtrusive验证来执行客户端验证.因此,您可以编写自定义RequiredIf验证属性,也可以使用Mvc Foolproof Validation中提供的属性,然后:

public class MyViewModel
{
    [RequiredIf("IsFlagSet", true)]
    [Remote("ValidateHosFin", "EditEncounter")]
    [MinLength(6)]
    public string HospitalFinNumber { get; set; }

    public bool IsFlagSet { get; set; }

    public string EncFlag { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后剩下的就是包含jquery.validate.jsjquery.validate.unobtrusive.js脚本或在ASP.NET MVC 4中使用包含它们的相应包.