Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery对字段数组进行不引人注目的验证-仅连接到第一个字段?_Javascript_Jquery_Asp.net Mvc_Validation_Unobtrusive Validation - Fatal编程技术网

Javascript JQuery对字段数组进行不引人注目的验证-仅连接到第一个字段?

Javascript JQuery对字段数组进行不引人注目的验证-仅连接到第一个字段?,javascript,jquery,asp.net-mvc,validation,unobtrusive-validation,Javascript,Jquery,Asp.net Mvc,Validation,Unobtrusive Validation,我一直坚持在字段数组中添加自定义的不引人注目的验证——数据验证属性只连接到第一个元素(索引为0)。你能帮个忙吗?谢谢 服务器端: public IEnumerable GetClientValidationRules(ModelMetadata元数据,ControllerContext上下文) { string errorMessage=ErrorMessageString; ModelClientValidationRule timeLessThanRule=新ModelClientValid

我一直坚持在字段数组中添加自定义的不引人注目的验证——数据验证属性只连接到第一个元素(索引为0)。你能帮个忙吗?谢谢

服务器端:

public IEnumerable GetClientValidationRules(ModelMetadata元数据,ControllerContext上下文)
{
string errorMessage=ErrorMessageString;
ModelClientValidationRule timeLessThanRule=新ModelClientValidationRule();
timeLessThanRule.ErrorMessage=错误消息;
timeLessThanRule.ValidationType=“timelessthan”;
timeLessThanRule.ValidationParameters.Add(“otherpropertyname”,\u otherpropertyname);
收益-回报-时间法则;
}
视图:

(int i=0;i<7;i++) { @Html.HiddenFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne).Id,新的{@Id=“StoreWorkingHours”+i+“\uu Id”,Name=“StoreWorkingHours[“+i+”].Id}) @Html.HiddenFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne).DayInWeek,新的{@id=“StoreWorkingHours”+i+“\uu DayInWeek”,Name=“StoreWorkingHours[“+i+”].DayInWeek”}) @Html.HiddenFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne)。IntervalInDay,新的{@id=“StoreWorkingHours”+i+“u IntervalInDay”,Name=“StoreWorkingHours[“+i+”].IntervalInDay”}) @Html.TextBoxFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne)。From,new{@class=“w-50 openedfrom”,“@id=”StoreWorkingHours_uu+i+“u From”,“Name=”StoreWorkingHours[“+i+”].From}) @Html.ValidationMessageFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne).From,“,new{@data\u valmsg\u for=“StoreWorkingHours[“+i+]”From”}) @Html.TextBoxFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne).Until,new{@class=“w-50 openeduntil”,“@id=”StoreWorkingHours_u+i+“u-Until”,“Name=”StoreWorkingHours[“+i+”)。Until“}) @Html.ValidationMessageFor(x=>Model.StoreWorkingHours.FirstOrDefault(y=>(int)y.DayInWeek==i+1&&y.IntervalInDay==IntervalInDay.IntervalOne).Until,“,new{@data_valmsg_for=”StoreWorkingHours[“+i+”。Until”}) } 自定义验证脚本:

$.validator.addMethod(“timelessthan”),函数(值、元素、参数){
变量索引=($(params).selector.split(“[”[1])。字符(0);
var tf=$(“#存储工作小时数”+索引+“#u直到”).val();
var tu=价值;
var至=新日期(“2014年1月1日”+tu);
var from=新日期(“2014年1月1日”+tf);
返回,直到<从;
});
$.validator.unobtrusive.adapters.add(“timelessthan”,[“otherpropertyname]”,函数(选项){
options.rules[“timelessthan”]=“#”+options.params.otherpropertyname;
options.messages[“timelessthan”]=options.message;
});
结果:


从视图中删除那些自定义的
htmlAttribute
。Razor会自动为您创建它

看法

这样做,您将看到它是否实际被调用。如果可以,我认为
“#”+options.params.otherpropertyname
不会给出预期的结果。因此您也必须更改它

@for (int i = 0; i < 7; i++)
{
    <div class="form-field">
        @Html.HiddenFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).Id)
        @Html.HiddenFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).DayInWeek)
        @Html.HiddenFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).IntervalInDay)
        @Html.TextBoxFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).From)
        <span class="field-validation">@Html.ValidationMessageFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).From)</span>
        @Html.TextBoxFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).Until)
        <span class="field-validation">@Html.ValidationMessageFor(x => Model.StoreWorkingHours.FirstOrDefault(y => (int)y.DayInWeek == i + 1 && y.IntervalInDay == IntervalInDay.IntervalOne).Until)</span>
    </div>
}
$.validator.addMethod("timelessthan", function (value, element, params) {
    console.log("HI :)");
    return false;
});

$.validator.unobtrusive.adapters.add("timelessthan", ["otherpropertyname"], function (options) {
    options.rules["timelessthan"] = "#" + options.params.otherpropertyname;
    options.messages["timelessthan"] = options.message;
});