我有一个以前使用 AjaxControlToolKit.Dll 的程序集版本 1.0.10301.0 的表单,当升级到新版本(例如 4.1.7.607)时,CalendarExtender 对象停止工作,因为日历按钮不再创建下拉式选择对象。我的代码没有任何变化,只有第三方 dll 从 764KB 跃升至 ~6.5MB。
问题似乎是,如果有多个具有相同 ID 的图像(我有三个),则会出现此问题。来源:单击图像时未弹出日历控件
由于创建实际表单的动态方式,我不可能在 .ascx 中“硬编码”几个 CalendarExtender 实例并在 .cs 中调用它们以防止出现此问题;例如,我只能拥有这个 dateCal。有没有办法解决这个问题,仍然允许我升级到最新版本的 Dll,例如某种允许相同 ID 的多个实例的标志?
代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DateTb.ascx.cs" Inherits="DateTb" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajx" %>
<asp:TextBox ID="dateTb" runat="server" Width="125px" MaxLength="1000"></asp:TextBox>
<asp:image id="dateImg" runat="server" imageurl="~/images/calendar.png" />
<ajx:CalendarExtender ID="dateCal" runat="server" PopupButtonID="dateImg" TargetControlID="dateTb"></ajx:CalendarExtender>
<asp:CompareValidator id="dateValidator" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="dateTb" ErrorMessage="Please enter a valid date." ValidationGroup="validate" Text="*" > </asp:CompareValidator>
<asp:RequiredFieldValidator ID="dateRequired" runat="server" ControlToValidate="dateTb" Text="*" ErrorMessage="Please enter a valid date." ValidationGroup="validate"></asp:RequiredFieldValidator>
表单前 DLL '升级':
表单后 DLL '升级':