【问题标题】:Ajax Toolkit Calendar Extender ErrorAjax 工具包日历扩展器错误
【发布时间】:2017-08-29 17:25:28
【问题描述】:

我有一个部署到登台服务器和生产服务器的 asp.net 网站。在我的登台服务器上,日历扩展器工作正常。但是,它出现了一个空白日历,并且我的生产服务器上出现了 java 脚本错误。两者都部署了完全相同的代码(减去 Web 配置中的连接字符串)、相同版本的 .NET 和相同版本的 AjaxControlToolkit dll。它抛出的 java 脚本错误有点奇怪,因为似乎没有空值,如它所指示的:“Uncaught TypeError: Cannot read property 'getFullYear' of null at Sys.Extended.UI.CalendarBehavior._parseTextValue 。”

生产服务器:

错误:

ScriptResource.axd?d=NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHUR00&t=ffffffff949e52 类型的空属性无法读取 在 Sys.Extended.UI.CalendarBehavior._parseTextValue (ScriptResource.axd?d=NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZgeff0NiahMLq9096Zgeff1NiahMLq): 在Sys.Extended.UI.CalendarBehavior.get_selectedDate(的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00&T = ffffffff949e5296:1) 在Sys.Extended.UI.CalendarBehavior._getEffectiveVisibleDate(的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00&T = ffffffff949e5296:1) 在 Sys.Extended.UI.CalendarBehavior._switchView (ScriptResource.axd?d=NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbj6001NiahMLq9e520010NiahMLqRff=) 在 Sys.Extended.UI.CalendarBehavior.show (ScriptResource.axd?d=NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbj96:1NiahMLqHurff02) 在Sys.Extended.UI.CalendarBehavior._element_onfocus(的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00&T = ffffffff949e5296:1) 在 HTMLInputElement。 (MicrosoftAjax.js:6) 在 HTMLInputElement.b (MicrosoftAjax.js:6)

分期:

任何想法可能导致这种情况?我的猜测是某处的某种版本不匹配,但我似乎找不到。如果需要其他信息,请告诉我。

更新: 我已更新到 AjaxControlToolkit 17.1.1,但在我的生产服务器上仍然出现相同的错误。

【问题讨论】:

    标签: c# asp.net ajax web ajaxcontroltoolkit


    【解决方案1】:

    您使用的似乎是 v17.1.0,它有这个错误:https://github.com/DevExpress/AjaxControlToolkit/issues/337

    尝试更新最新的v17.1.1 (NuGet package),错误应该消失了。

    【讨论】:

    • 它试过了,但我仍然遇到同样的错误。查看更新的问题。
    • 哦,等等,这个修复不包含在 v17.1.1 中。不过你可以下载the latest custom build
    【解决方案2】:

    我遇到了这个问题。 我的建议: 您可以将 CalendarExtender 的格式属性修改为文本框中匹配的日期格式。

    错误:

    <asp:TextBox ID="tbxValidFrom" CssClass="form-input" runat="server" ReadOnly="True" TabIndex="2" Text="2017.08.03." />    
    <ajaxToolkit:CalendarExtender runat="server" ID="ceValidFrom" TargetControlID="tbxValidFrom" ClearTime="True" FirstDayOfWeek="Monday" PopupPosition="BottomRight" Format="yyyy.MM.dd" Enabled="True" />
    

    解决方案:

    <asp:TextBox ID="tbxValidFrom" CssClass="form-input" runat="server" ReadOnly="True" TabIndex="2" Text="2017.08.03." /> 
    <ajaxToolkit:CalendarExtender runat="server" ID="ceValidFrom" TargetControlID="tbxValidFrom" ClearTime="True" FirstDayOfWeek="Monday" PopupPosition="BottomRight" Format="yyyy.MM.dd." Enabled="True" />
    

    【讨论】:

      【解决方案3】:

      我在输入错误日期时遇到了同样的异常,例如:2019-99-01。 AjaxToolKit 17.1.1.0。 修复方法是重写错误函数:

          Sys.Extended.UI.CalendarBehavior.prototype._parseTextValue = function (text) {
              // Converts a text value from the textbox into a date
      
              var value = null;
              if (text) {
                  value = Date.parseLocale(text, this.get_format());
                  if (value == null) value = new Date();  // fix: (the calendar wants the date in the associated textbox, but its invalid: 2019-99-01)
      
                  // Initial code: value is null, un-caught exception
                      //if (value.getFullYear() < 100) 
                      //    value.setYear(value.getFullYear());
              }
              if (isNaN(value)) {
                  value = null;
              }
              return value;
          };
      

      在我的网站 js 脚本的开头。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多