Asp.net SelectedDate不适用于日历对象

Asp.net SelectedDate不适用于日历对象,asp.net,Asp.net,我正在尝试为ASP.NET上的日历对象设置新日期,但没有更改。这是我的密码: protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack) { cld_birth.SelectedDate = new DateTime(2003, 1, 1); } } 如果要设置页面首次加载的时间,请使用确定页面是首次加载还是回发 if (!Page.IsPostBack)

我正在尝试为ASP.NET上的日历对象设置新日期,但没有更改。这是我的密码:

protected void Page_Load(object sender, EventArgs e)
{

    if (Page.IsPostBack)
    {
        cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    }
}

如果要设置页面首次加载的时间,请使用确定页面是首次加载还是回发

if (!Page.IsPostBack)
    {
        cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    }

同时尝试设置
VisibleDate

if (Page.IsPostBack)
{
    cld_birth.SelectedDate = new DateTime(2003, 1, 1);
    cld_birth.VisibleDate = new DateTime(2003, 1, 1);
}

您必须在控件中定义
SelectedDayStyle

<asp:Calendar ID="cld_birth" runat="server">
   <SelectedDayStyle Font-Size="X-Large" />
</asp:Calendar>

如果所选日期包含非午夜时间,则所选日期不会突出显示(即忽略SelectedDayStyle)。 你会希望第一个选择是好的。 不,很不幸

            Dim oDt As New Date()
            oDt = Now                
            Dim oDtYesterday As New Date
            oDtYesterday = DateAdd(DateInterval.Day, -1, oDt)

            'oDtYesterday is all fine, but does not highlight
            'calDateFrom.SelectedDate = oDtYesterday 

            Dim sDateYesterday As String
            sDateYesterday = Format(oDtYesterday, "dd MMM yyyy")

            Dim oDtY As New Date
            oDtY = CDate(sDateYesterday & " 12:00:00 AM")

            calDateFrom.SelectedDate = oDtY 
            calDateFrom.VisibleDate = calDateFrom.SelectedDate

按照@Martin Brennan的建议去做,但是代码可能需要放在Page_PreRender事件处理程序中

  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (Page.IsPostBack)
    {
      cld_birth.SelectedDate = new DateTime(2003, 1, 1);
      cld_birth.VisibleDate = new DateTime(2003, 1, 1);
    }
  }

因为
VisibleDate
属性决定在日历上显示哪个月/日期,而
SelectedDate
只选择它。
  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (Page.IsPostBack)
    {
      cld_birth.SelectedDate = new DateTime(2003, 1, 1);
      cld_birth.VisibleDate = new DateTime(2003, 1, 1);
    }
  }