2013-08-10 4 views
1

Я использую расширитель календаря AJAX с текстовым полем, и я хочу отключить прошлые даты, чтобы пользователь не смог выбрать те, которые меньше сегодняшней даты. Мой код выглядит следующим образом
System.FormatException: String не был признан действительным DateTime

В .aspx странице

<asp:TextBox ID="txtFromDate" runat="server" ontextchanged="txtFromDate_TextChanged"  AutoPostBack="true"></asp:TextBox> 
    <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtFromDate"> 
     </asp:CalendarExtender> 
     <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
     </asp:ToolkitScriptManager> 

и на .cs странице

protected void txtFromDate_TextChanged(object sender, EventArgs e) 
    { 
     DateTime dt1 = DateTime.Parse(txtFromDate.Text); 
     if (dt1 < DateTime.Now) 
     { 
      //Response.Write("you can not choose date earlier than today's date"); 
      txtFromDate.Text = null; 
     } 
    } 


Но я получаю следующее сообщение об ошибке:
System.FormatException: String не был признан действительным DateTime.
и есть ли способ, которым я могу сделать эти даты незаметными, чтобы пользователь не мог выбирать из них, используя атрибуты startDate и Enddate, или каким-либо другим способом, я также пробовал те, но снова я получил ошибку, что они не поддерживаются. Любая помощь будет оценена.

+3

Для начала вы хотите хотите использовать TryParse, который не бросит ошибку, а просто вернуться ложным, если строка не может быть преобразована: http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx – ChargerIIC

ответ

1

Попробуйте это, если формат ваших Date «S является„/ ММ/гггг“:

String[] date = typedDate.Text.Split(new char[] { '/' }); 
Datetime dy = new DateTime(int.Parse(date[0]), int.Parse(date[1]), int.Parse(date[2])); 
Смежные вопросы