日历扩展器日计算例外

时间:2013-10-30 20:50:10

标签: c# asp.net

这是我使用ajax toolscript在日历扩展程序上执行的代码。我想计算天数,但它给出了以下异常

  

无法转换'AjaxControlToolkit.CalendarExtender'类型的对象   输入'System.IConvertible'。

以下是计算days ::

的代码
protected void Page_Load(object sender, EventArgs e)
    {
        TextBox2_CalendarExtender.StartDate = DateTime.Now;
        TextBox2_CalendarExtender.EndDate = DateTime.Now.AddDays(30);

        TextBox1_CalendarExtender.StartDate = DateTime.Now.AddDays(1);
        TextBox1_CalendarExtender.EndDate = DateTime.Now.AddDays(30);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        TimeSpan days = Convert.ToDateTime(TextBox1_CalendarExtender).Subtract(Convert.ToDateTime(TextBox2_CalendarExtender));
        int day = Convert.ToInt32(days.TotalDays);
        Label1.Text = day.ToString();
    }

这只是特定部分的asp代码::

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="TextBox2_CalendarExtender" runat="server" 
    TargetControlID="TextBox2" StartDate="<%#DateTime.Now %>" EndDate="     <%#DateTime.Now.AddDays(30) %>">
</asp:CalendarExtender>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="TextBox1_CalendarExtender" runat="server" 
    TargetControlID="TextBox1" StartDate="<%#DateTime.Now.AddDays(1) %>" EndDate="<%#DateTime.Now.AddDays(30) %>">
</asp:CalendarExtender>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

1 个答案:

答案 0 :(得分:0)

错误来自您的Convert方法。代码TimeSpan days = Convert.ToDateTime(new object()).Subtract(Convert.ToDateTime(DateTime.Now));  会给出错误:

  

无法将类型为“System.Object”的对象强制转换为类型   'System.IConvertible'。

但是,如果您将新对象()更改为method signatures之一的有效类型,则它可以正常工作。

在您的代码中,此行

TimeSpan days = Convert.ToDateTime(TextBox1_CalendarExtender).Subtract(Convert.ToDateTime(TextBox2_CalendarExtender));

TextBox1_CalendarExtenderTextBox2_CalendarExtender需要附加StartDateEndDate属性,以便它们属于DateTime类型。由于将DateTime转换为DateTime不起作用,因此不需要转换。它最终会看起来像这样。

TimeSpan days = TextBox1_CalendarExtender.StartDate.Subtract(TextBox2_CalendarExtender.StartDate);