我有一个asp.net网站部署到登台服务器和生产服务器。在我的临时服务器上,日历扩展程序正常工作。但是,它出现了一个空白日历,我的生产服务器上出现了java脚本错误。两者都具有相同的部署代码(减去Web配置中的连接字符串),相同版本的.NET以及相同版本的AjaxControlToolkit DLL。它抛出的java脚本错误有点奇怪,因为似乎没有像它表示的空值:“未捕获的TypeError:在Sys.Extended.UI.CalendarBehavior._parseTextValue中无法读取null的属性'getFullYear'。”
错误:
?的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00& T公司= ffffffff949e5296:1未捕获的类型错误:无法读取属性 '和getFullYear' 空的 在Sys.Extended.UI.CalendarBehavior._parseTextValue(?的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00& T公司= ffffffff949e5296:1) 在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-fvIzsJbjZge0NiahMLqHuR00& T公司= ffffffff949e5296:1) 在Sys.Extended.UI.CalendarBehavior.show(?的ScriptResource.axd d = NISXSzp87hD3qcCkP6NEPuF9CcnK5I-ufPjsh34laJN_X0aVHxlrSCRTcuVNdBlHJPhDZIUvEREh5VBuThlsgo_BghBpg0ddHeQysAHm-fvIzsJbjZge0NiahMLqHuR00& T公司= ffffffff949e5296:1) 在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)
任何可能导致此问题的想法?我的猜测是某种类型的版本不匹配,但我似乎无法找到一个。如果需要其他信息,请与我们联系。
答案 0 :(得分:1)
看起来你正在使用v17.1.0,它有这个错误:https://github.com/DevExpress/AjaxControlToolkit/issues/337
尝试更新最新的v17.1.1(NuGet package),错误应该消失。
答案 1 :(得分:1)
我遇到了这个问题。 我的建议: 您可以将CalendarExtender的format属性修改为在文本框中匹配日期格式。
错:
<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" />
答案 2 :(得分:0)
我也遇到了同样的例外,即输入错误的日期,例如: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脚本的开头。