C# 年、月和日参数描述不可表示的日期时间

C# 年、月和日参数描述不可表示的日期时间,c#,datetime,C#,Datetime,单击表单的“提交”按钮而不填写任何表单字段时,它将返回一个验证横幅面板1。可见,它与除节育日期外的所有其他字段一起工作,节育日期是3个不同的选择框,分别表示日、月和年。ect ct。。。因为默认值为01/01/0001 00:00:00,所以给出错误。如何验证日期时间 Stack Trace: at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) at System.DateTime..ctor(Int32 yea

单击表单的“提交”按钮而不填写任何表单字段时,它将返回一个验证横幅面板1。可见,它与除节育日期外的所有其他字段一起工作,节育日期是3个不同的选择框,分别表示日、月和年。ect ct。。。因为默认值为01/01/0001 00:00:00,所以给出错误。如何验证日期时间

Stack Trace:

at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day)
at System.DateTime..ctor(Int32 year, Int32 month, Int32 day)
at _Default.sb_Click(Object sender, EventArgs e) in k:\WebSites\WebSite10\Default.aspx.cs:line 27
at System.Web.UI.ImageClickEventHandler.Invoke(Object sender, ImageClickEventArgs e)
at System.Web.UI.HtmlControls.HtmlInputImage.OnServerClick(ImageClickEventArgs e)
at System.Web.UI.HtmlControls.HtmlInputImage.RaisePostBackEvent(String eventArgument)
at System.Web.UI.HtmlControls.HtmlInputImage.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Server Side: 

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

protected void sb_Click(object sender, EventArgs e)
{

DateTime age = new DateTime(Convert.ToInt32(year.Value), Convert.ToInt32(date.Value), Convert.ToInt32(day.Value));

SqlCommand cmd = new SqlCommand("insert into Register values ( '" + em.Value + "','" + ln.Value + "','" + select.Value + "','" + fn.Value + "','" + pwr.Value + "','" + age + "','" + pw.Value + "')", con);

if (em.Value == "" || ln.Value == "" || select.Value == "" || fn.Value == "" || pwr.Value == "" || pw.Value == "")
{

panel1.Visible = true;
con.Close();
}

else

cmd.ExecuteNonQuery();
con.Close();





Client Side: 

<select name="month" id="date" runat="server">
<option value="0">Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>

<select name="day" id="day" runat="server">
<option value="0">Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>

<select name="year" id="year" runat="server">
<option value="0">Year</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>
<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>
<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>
<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
<option value="1912">1912</option>
<option value="1911">1911</option>
<option value="1910">1910</option>
<option value="1909">1909</option>
</select>
堆栈跟踪:
在System.DateTime.DateToTicks(Int32年、Int32月、Int32天)
在System.DateTime..ctor(Int32年、Int32月、Int32天)
在_Default.sb_单击k:\WebSites\WebSite10\Default.aspx.cs中的(对象发送者,事件参数e):第27行
在System.Web.UI.ImageClickEventHandler.Invoke(对象发送者,ImageClickEventArgs e)
在System.Web.UI.HtmlControls.HtmlInputImage.OnServerClick(ImageClickEventArgs e)中
位于System.Web.UI.HtmlControl.HtmlInputImage.RaisePostBackEvent(String eventArgument)
位于System.Web.UI.HtmlControl.HtmlInputImage.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串事件参数)
位于System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)
位于System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
服务器端:
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“ConnectionString”].ConnectionString);
受保护的void sb_Click(对象发送方,事件参数e)
{
DateTime age=新的日期时间(Convert.ToInt32(year.Value)、Convert.ToInt32(date.Value)、Convert.ToInt32(day.Value));
SqlCommand cmd=new SqlCommand(“插入寄存器值(“+em.Value+”、“+ln.Value+”、“+select.Value+”、“+fn.Value+”、“+pwr.Value+”、“+age+”、“+pw.Value+”)、con”);
如果(em.Value==“”| | ln.Value==“”| | select.Value==“”| | fn.Value==“”| | pwr.Value==“”| | pw.Value==“”)
{
面板1.可见=真实;
con.Close();
}
其他的
cmd.ExecuteNonQuery();
con.Close();
客户端:
月
一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
白天
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
年
2009
2008
2007
2006
2005
2004
2003
2002
2001
2000
1999
1998
1997
1996
1995
1994
1993
1992
1991
1990
1989
1988
1987
1986
1985
1984
1983
1982
1981
1980
1979
1978
1977
1976
1975
1974
1973
1972
1971
1970
1969
1968
1967
1966
1965
1964
1963
1962
1961
1960
1959
1958
1957
1956
1955
1954
1953
1952
1951
1950
1949
1948
1947
1946
1945
1944
1943
1942
1941
1940
1939
1938
1937
1936
1935
1934
1933
1932
1931
1930
1929
1928
1927
1926
1925
1924
1923
1922
1921
1920
1919
1918
1917
1916
1915
1914
1913
1912
1911
1910
1909

查看代码时,不应该
DateTime age=new DateTime(Convert.ToInt32(year.Value)、Convert.ToInt32(date.Value)、Convert.ToInt32(day.Value));
在默认值上抛出一个
ArgumentOutOfRangeException
?这正是我的问题!但无法充分解释它。我如何验证它,使它不会抛出此异常?
if (em.Value == "" || ln.Value == "" || select.Value == "" || fn.Value == "" || pwr.Value == "" || pw.Value == "" || year.Value == "0" || date.Value == "0" || day.Value == "0" )
{
    panel1.Visible = true;
}
else
{
    DateTime age = new DateTime(Convert.ToInt32(year.Value), Convert.ToInt32(date.Value), Convert.ToInt32(day.Value));

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SqlCommand cmd = new SqlCommand("insert into Register values ( '" + em.Value + "','" + ln.Value + "','" + select.Value + "','" + fn.Value + "','" + pwr.Value + "','" + age + "','" + pw.Value + "')", con);
    cmd.ExecuteNonQuery();
    con.Close();   
}