Неперехваченное Sys.ArgumentOutOfRangeException: Sys.ArgumentOutOfRangeException: значение должно быть целым числом. в расширителе календаря AjaxToolkit

Я получаю сообщение об ошибке в текстовом поле с помощью расширителя календаря Ajax Control Toolkit, я использую Microsoft Edge, IE11, Chrome:

Неперехваченное Sys.ArgumentOutOfRangeException: Sys.ArgumentOutOfRangeException: значение должно быть целым числом. Имя параметра: у

Текстовое поле, заполненное или нет при загрузке формы, получает эту ошибку.

Вот код на стороне клиента

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>

Вот полная ошибка

Я попробовал приведенные ниже предложения, но ничего не получилось.

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,


person Bob Jason Tiamsic    schedule 06.01.2021    source источник


Ответы (1)


Проблема возникает из-за того, что эта старая библиотека вычисляет смещение (местоположение) одного из связанных элементов, используя прокрутку тела, а эта последняя возвращает значение с плавающей запятой.

https://github.com/jquery/api.jquery.com/issues/608 проблема с анимацией Jquery ScrollTop

Связанный код в старой библиотеке:

Перепробовал много обходных путей для округления значения, но, поскольку этот инструментарий предоставляется в виде dll, невозможно внедрить некоторую дополнительную логику скрипта.

$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", type: Number, 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);

Мое исправление в основном заключается в переходе на последнюю версию AjaxControlToolkit (20.1.0.0). Я протестировал эту новую библиотеку в той же среде, в которой изолировал проблему, и эта последняя версия уже устранила проблему с плавающей запятой.

связанный код в обновленной библиотеке:

Неперехваченное Sys.ArgumentOutOfRangeException: Sys.ArgumentOutOfRangeException: значение должно быть целым числом. Имя параметра: y Фактическое значение: 625,5757446289062. at Function.Error$create [as create] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:847:15) at Function.Error$argumentOutOfRange [as argumentOutOfRange] (http: //localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:908:21) at Function$_validateParameterType [as _validateParameterType] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv -sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:802:23) at Function$_validateParameter [as _validateParameter] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=f fffffffdd783992:719:18) at Function$_validateParams [as _validateParams] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:668:22) at new Point (http://localhost /ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:4739:22) at Function.DomElement$getLocation [as getLocation] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv- sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:5195:16) at Function.DomElement$getBounds [as getBounds] (http://localhost/ScriptResource.axd?d=N9v-ex4jLgM8lHFu-PPLr2Aehppm2kCvkWv-sT6x6bMHJlxsZJOQTws_pzPtAPh87KkT1s87GA2MC3sHg242UGoTeK7AnwWYZ8KDIobeAa5Q7ArWAJqVtXJAaHQ_aXoSGb23JA2&t=ffffffffdd783992:5126:36) at 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+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%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+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen-US%3a07ead49c-3169-4e2b-b447-bacc452e967a%3ade1feab2%3afcf0e993%3af2c8e708%3a720a52bf%3af9cec9bc%3a589eaa30%3a698129cf%3afb9b4c57%3accb96cf9:29: 1919)

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, [
        {name: "x", type: Number},
        {name: "y", type: Number}
    ]);
    if (e) throw e;
    this.rawX = x;
    this.rawY = y;
    this.x = Math.round(x);
    this.y = Math.round(y);
}
person Helder Fernandez    schedule 06.04.2021