这是我使用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>
答案 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_CalendarExtender
和TextBox2_CalendarExtender
需要附加StartDate
或EndDate
属性,以便它们属于DateTime类型。由于将DateTime转换为DateTime不起作用,因此不需要转换。它最终会看起来像这样。
TimeSpan days = TextBox1_CalendarExtender.StartDate.Subtract(TextBox2_CalendarExtender.StartDate);