好吧,我有一个RangeValidator:

<asp:RangeValidator ID="DateRangeValidator" runat="server" ControlToValidate="DateRange"
    ErrorMessage="The date range must be at least 1 day, not more than 30, and neither date can be greater than today's date."
    EnableClientScript="true" MinimumValue="1" MaximumValue="30" CssClass="errortext span9 offset2"
    Display="Dynamic" />

如您所见,最小值为1,最大值为30。

那是在验证一个隐藏的字段(由于我正在测试,因此可见):
<asp:TextBox ID="DateRange" runat="server" ClientIDMode="Static" />

正如您所看到的,我将客户端ID设置为静态,因此它可以很好地找到控件。

当两个日期之一更改时,此JavaScript方法将填充该隐藏字段:
$('.datepicker').change(function () {
    var startDate = new Date($('#StartDate').val());
    var endDate = new Date($('#EndDate').val());

    if (startDate > Date() || endDate > Date()) {
        $('#DateRange').val(-1);
    }
    else {
        var nDifference = endDate - startDate;
        var one_day = 1000 * 60 * 60 * 24;
        $('#DateRange').val(Math.round(nDifference / one_day) + 1);
    }

    Page_ClientValidate(null);
});

从设置正确的天数差异的 Angular 来看,此方法非常有效。

调用Page_ClientValidate时,我已对其进行调试,以确保验证程序按预期方式触发,并且确实如此,并且它具有我期望的值。选中最小值时,它将获取1 ...,然后将其与值8进行比较...将按预期进行评估... 8大于或等于1。

但是,当检查最大值时,即使它获取最大值是30……将其与值8进行比较……表示8小于或等于30的表达式也将被评估为false。

我真的希望有人能在这里帮助我!

8个世界上不少于30个?

最佳答案

您在Type="Integer"上缺少 RangeValidator

10-06 04:11
查看更多