微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

未捕获的 Sys.ArgumentOutOfRangeException:Sys.ArgumentOutOfRangeException:值必须是整数在 AjaxToolkit 日历扩展器上

如何解决未捕获的 Sys.ArgumentOutOfRangeException:Sys.ArgumentOutOfRangeException:值必须是整数在 AjaxToolkit 日历扩展器上

我在使用 Ajax Control Toolkit 日历扩展器的文本框上遇到错误,我使用的是 Microsoft Edge、IE11、Chrome:

未捕获的 Sys.ArgumentOutOfRangeException:Sys.ArgumentOutOfRangeException:值必须是整数。 参数名称:y

无论是否在表单加载时填充的文本框都会出现此错误

这是客户端代码

Remodel Date<br /><br />
 <asp:TextBox ID="txtbxRemodelDate" runat="server" CssClass="detailscreenwidthstyle1"></asp:TextBox>

 <asp:RegularExpressionValidator ID="txtbxStartDateRegularExpressionValidator" runat="server"
      ControlTovalidate="txtbxRemodelDate" display="Dynamic" ErrorMessage="</br>*Date must be a valid date"
      ValidationExpression="([1-9]|1[012])/([1-9]|[12][0-9]|3[01])/(19|20)\d\d"></asp:RegularExpressionValidator>

 <cc1:CalendarExtender ID="CalendarExtender1" runat="server" 
       CssClass="blueCalendar" TargetControlID="txtbxRemodelDate"></cc1:CalendarExtender>

这是完整的错误

未捕获的 Sys.ArgumentOutOfRangeException:Sys.ArgumentOutOfRangeException:值必须是整数。 参数名称:y 实际值为 625.5757446289062。 在Function.Error $创建[如创建](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:847:15) 在Function.Error $ argumentOutOfRange [如argumentOutOfRange](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:908:21) 在功能$ _validateParameterType [如_validateParameterType](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:802:23) 在功能$ _validateParameter [如_validateParameter](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:719:18) 在功能$ _validateParams [如_validateParams](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:668:22) 在新的点(HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:4739:22) 在Function.DomElement $的getLocation [按的getLocation](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:5195:16) 在Function.DomElement $的getBounds [按的getBounds](HTTP://localhost/ScriptResource.axd d = N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KdiobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&T = ffffffffdd783992:5126:36) 在 Sys.Extended.UI._CommonToolkitScripts.getBounds (http://localhost/facilities/facilitiesrenovation.aspx?TSM_HiddenField=ctl00_smScriptManager_HiddenField&TSM_CombinedScripts=%3b%3bAjaxControlToolkit%2c+Version %3d4.1.51116.0%2C +文化%3dneutral%2C +公钥%3d28f01b0e84b6d53e%3aen美%3a07ead49c-3169-4e2b-b447-bacc452e967a%3ade1feab2%3afcf0e993%3af2c8e708%3a720a52bf%3af9cec9bc%3a589eaa30%3a698129cf%3afb9b4c57%3accb96cf9 :3:3108) 在 Sys.Extended.UI.PopupBehavior.getBounds (http://localhost/facilities/facilitiesrenovation.aspx?TSM_HiddenField=ctl00_smScriptManager_HiddenField&TSM_CombinedScripts=%3b%3bAjaxControlToolkit%2c+Version %3d4.1.51116.0%2C +文化%3dneutral%2C +公钥%3d28f01b0e84b6d53e%3aen美%3a07ead49c-3169-4e2b-b447-bacc452e967a%3ade1feab2%3afcf0e993%3af2c8e708%3a720a52bf%3af9cec9bc%3a589eaa30%3a698129cf%3afb9b4c57%3accb96cf9 :29:1919)

我尝试了以下建议,但没有任何效果

https://www.telerik.com/forums/sys-argumentoutofrangeexception-value-must-be-an-integer-ba4368c85de9

https://forums.asp.net/t/1620879.aspx

一个建议建议修改 MicrosoftAjax.js,但我没有那个文件

解决方法

我遇到了同样的问题并使用 AjaxControlToolkit 版本隔离它:4.5.7.429,

问题发生是因为这个旧库使用 body scrolltop 计算相关元素之一的偏移量(位置),而这个最新的返回一个浮点值。

https://github.com/jquery/api.jquery.com/issues/608 Jquery ScrollTop animation issue

旧库中的相关代码:

$type = Sys.UI.Point = function Point(x,y) {
    /// <summary locid="M:J#Sys.UI.Point.#ctor"></summary>
    /// <param name="x" type="Number" integer="true"></param>
    /// <param name="y" type="Number" integer="true"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
    var e = Function._validateParams(arguments,[
        {name: "x",type: Number,integer: true},{name: "y",integer: true}
    ]);
    if (e) throw e;
    this.x = x;
    this.y = y;
}

        
 function DomElement$getLocation(element)
     var ex,ownerDoc = element.ownerDocument,documentElement = ownerDoc.documentElement,offsetX = Math.round(clientRect.left) + (documentElement.scrollLeft || (ownerDoc.body ? ownerDoc.body.scrollLeft : 0)),offsetY = Math.round(clientRect.top) + (documentElement.scrollTop || (ownerDoc.body ? ownerDoc.body.scrollTop : 0));
  ...
  return new Sys.UI.Point(offsetX,offsetY);

尝试了很多解决方法来舍入值,但由于此工具包是作为 dll 提供的,因此无法注入一些脚本附加逻辑。

我的修复基本上是迁移到最新的 AjaxControlToolkit (20.1.0.0),我在隔离问题的相同环境中测试了这个新库,而这个最新版本已经修复了浮动问题。

更新库中的相关代码:

Sys.UI.Point = function Sys$UI$Point(x,y) {
    /// <summary locid="M:J#Sys.UI.Point.#ctor" />
    /// <param name="x" type="Number"></param>
    /// <param name="y" type="Number"></param>
    /// <field name="x" type="Number" integer="true" locid="F:J#Sys.UI.Point.x"></field>
    /// <field name="y" type="Number" integer="true" locid="F:J#Sys.UI.Point.y"></field>
    /// <field name="rawX" type="Number" locid="F:J#Sys.UI.Point.rawX"></field>
    /// <field name="rawY" type="Number" locid="F:J#Sys.UI.Point.rawY"></field>
    var e = Function._validateParams(arguments,type: Number},type: Number}
    ]);
    if (e) throw e;
    this.rawX = x;
    this.rawY = y;
    this.x = Math.round(x);
    this.y = Math.round(y);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。