ASP.NET Ajax CalendarExtender不会更新SelectedDate值

ASP.NET Ajax CalendarExtender不会更新SelectedDate值,asp.net,ajax,postback,calendarextender,Asp.net,Ajax,Postback,Calendarextender,由于某些原因,ASP.NET站点上正在使用的任何CalendarExtender都不会更新。我已经检查了所有明显的位置(例如AutoPostBack和AutoEventHandler)。问题是,当我从日历中选择一个日期并将其发布到表单时,正在扩展的文本框正在更新,但日历扩展程序的日期根本没有更新(例如,SelectedDate仍然与以前相同)。我在谷歌上搜索过任何可能的解决方案,但都没有成功 代码如下: <%@ Page Title="" Language="C#" MasterPageF

由于某些原因,ASP.NET站点上正在使用的任何CalendarExtender都不会更新。我已经检查了所有明显的位置(例如AutoPostBack和AutoEventHandler)。问题是,当我从日历中选择一个日期并将其发布到表单时,正在扩展的文本框正在更新,但日历扩展程序的日期根本没有更新(例如,SelectedDate仍然与以前相同)。我在谷歌上搜索过任何可能的解决方案,但都没有成功

代码如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master"
    AutoEventWireup="true" CodeBehind="ThePage.aspx.cs" Inherits="ThePage" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:TextBox runat="server" ID="txtBlah" />
<asp:CalendarExtender ID="txtBlahExtender" runat="server" TargetControlID="txtBlah" Format="MMMM d, yyyy" />
<asp:Button runat="server" ID="btnSubmit" CausesValidation="false" />
当我的代码到达“执行回发操作”时,txtBlahExtender.SelectedDate始终是DateTime.Today.AddDays(4)。它只是没有注册更改

有什么想法吗

谢谢, 洛根·史密斯


(是否可以对问题进行格式化?

确保将texbox和extender放入UpdatePanel中(我在您提供的代码中没有看到这一点)。

在搜索了无数次Internet后,似乎没有解决此问题的方法。解决方案(如果您想这样称呼它)可以是使用文本框中的转换手动指定SelectedDate(但这需要您在标记中设置格式):

(其中blah是文本控件,BlahCalendarXtender是扩展blah的扩展器)


calendarExtender控件似乎应该足够智能,可以独立完成此操作。

我发现了一个非常奇怪的解决方案


不要初始化已连接日历扩展程序的文本框的值。保持文本框为空

更新-不工作。添加UpdatePanel后,该值立即恢复为初始值,并拒绝让我更改。我的已在UpdatePanel中,这没有任何区别:(我遇到了相同的问题,我将BlahCalendarXtender.SelectedDate设置为null;因此,如果用户在blah.Text中插入了一些不可解析的日期,我可以避免出现问题。用户最后选择的日期由视图状态自动填充。
public partial class ThePage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtBlahExtender.SelectedDate = DateTime.Today.AddDays(4);
            }
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
         //do postback actions        
        }
    }
}
if(IsPostBack) {
blahCalendarExtender.SelectedDate = DateTime.ParseExact(blah.Text, blahCalendarExtender.Format, null);
// do postback actions
} else {
// for instance, maybe initalize blahCalendarExtender to today
blahCalendarExtender.SelectedDate = DateTime.Today;
}