字符串未被识别为有效的DateTime错误? [英] String was not recognized as a valid DateTime Error?
问题描述
我将用户数据插入到sql表中,但在提交时会出现以下错误。
System.FormatException:字符串未被识别为有效的DateTime。在System.DateTimeParse.Parse(String s,DateTimeFormatInfo dtfi,DateTimeStyles样式)的System.Convert.ToDateTime(字符串值)处于电子邮箱中的Registration_Requestaccount.BtnSubmit_Click(Object sender,EventArgs e)中:\ ECCII \Registration \Requestaccount。 aspx.cs:第166行
这是我的代码:
< ajaxToolkit:ToolkitScriptManager ID = ToolkitScriptManager1 runat = server > < / ajaxToolkit:ToolkitScriptManager >
< asp: TextBox ID = tbxpartyjoinson runat = server CssClass = TextBoxClass Width = 50% TextMode = SingleLine ToolTip = 输入您的电子邮件地址 AutoCompleteType = 已禁用占位符= 例如01-03-2010 > < / asp:TextBox >
< ajaxToolkit:CalendarExtender ID = CalendarExtender1 runat = server TargetControlID = tbxpartyjoinson PopupPosition = 右格式= dd-MM-yyyy > < / ajaxToolkit:CalendarExtender >
< asp:RequiredFieldValidator ID = rvjoiningdat e runat = server显示= 无 ControlToValidate = tbxpartyjoinson ErrorMessage = 请输入您参加聚会的日期 Text = *字体名称= Calibri字体大小= medium ForeColor = 红色 > < / asp:RequiredFieldValidator >
< asp:RegularExpressionValidator ID = revjoiningdate runat = server Display = 无 ControlToValidate = tbxpartyjoinson ValidationExpression = ^(0 [1- 9] | 1 [0-9] | 2 [0-9] | 3 [1-2])[ - ](0 [1-9] | 1 [0-2])[ - ](1 [9] [0-9] [0-9] | 2 [0] [0-9] [0-9])$ ErrorMessage = < span class =code-string>日期格式应为31/12/2014 Text = *字体名称= Calibri字体大小= 小 ForeColor = 红色 > < / asp:RegularExpressionValidator >
db1.sqlcmd = new SqlCommand(< span class =code-string> uspAccountRequest);
使用(SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue( @ FirstName,名字);
db1.sqlcmd.Parameters.AddWithValue( @ LastName,姓氏);
db1.sqlcmd.Parameters.AddWithValue( @ CNIC,cnic);
db1.sqlcmd.Parameters.AddWithValue( @ Email,email);
db1.sqlcmd.Parameters.AddWithValue( @ Party,DDParty.SelectedValue);
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,Convert.ToDateTime(tbxpartyjoinson) 。文本));
db1.sqlcmd.Parameters.AddWithValue( @ Constituency,DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add( @ success,SqlDbType.Bit);
db1.sqlcmd.Parameters [ @ success]。Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = Convert.ToBoolean(db1.sqlcmd.Parameters [ @ success]。价值);
创建 PROC uspAccountRequest
@ success 位 out,
@ FirstName varchar ( 20 ), @ LastName varchar ( 20 ), @ CNIC bigint , @ Email varchar ( 50 ), @ Constituency int , @ Part y int , @ PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON ;
BEGIN TRY
IF EXISTS ( SELECT 电子邮件 FROM TblAccountRequest WHERE Email = @ Email )
BEGIN
SELECT -1 - 电子邮件存在。
END
ELSE IF EXISTS ( SELECT CNIC FROM TblAccountRequest WHERE CNIC = @ CNIC )
BEGIN
SELECT -2 - CNIC存在
END
ELSE IF EXISTS ( SELECT 电子邮件 FROM TblUser WHERE Email = @ Email )
BEGIN
SELECT -3 - 电子邮件存在。
END
ELSE IF EXISTS ( SELECT NIC FROM TblUser WHERE NIC = @ CNIC )
BEGIN
SELECT -4 - CNIC存在。
END
ElSE
BEGIN
插入 到 TblAccountRequest(FirstName,LastName,CNIC,Email,选区,Party,partyjoninson,RequestDate,IsAccepted)
值( @ FirstName , @ LastName , @ CNIC , @ Email ,( SELECT 代码 FROM TblConstituency WHERE ConstID = @ Constituency ),( SELECT PartyName FROM TblParty WHERE PartyId = @ Party ),< span class =code-sdkkeyword> @ PartyJoiningDate ,GETDATE(), 0 ) SELECT @@ IDENTITY
SELECT SCOPE_IDENTITY () - 请求ID
SET @ success = 1
END
END TRY
BEGIN CATCH
SET @ success = 0
END CATCH
END
ErrorMessage = 日期应该格式为31/12/2014 Text = *字体名称= Calibri字体大小= 小 ForeColor = 红色 > < / asp:RegularExpressionValidator >
db1.sqlcmd = new SqlCommand( uspAccountRequest< /跨度>);
使用(SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue( @ FirstName,名字);
db1.sqlcmd.Parameters.AddWithValue( @ LastName,姓氏);
db1.sqlcmd.Parameters.AddWithValue( @ CNIC,cnic);
db1.sqlcmd.Parameters.AddWithValue( @ Email,email);
db1.sqlcmd.Parameters.AddWithValue( @ Party,DDParty.SelectedValue);
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,Convert.ToDateTime(tbxpartyjoinson) 。文本));
db1.sqlcmd.Parameters.AddWithValue( @ Constituency,DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add( @ success,SqlDbType.Bit);
db1.sqlcmd.Parameters [ @ success]。Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = Convert.ToBoolean(db1.sqlcmd.Parameters [ @ success]。价值);
创建 PROC uspAccountRequest
@ success 位 out,
@ FirstName varchar ( 20 ), @ LastName varchar ( 20 ), @ CNIC bigint , @ Email varchar ( 50 ), @ Constituency int , @ Part y int , @ PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON ;
BEGIN TRY
IF EXISTS ( SELECT 电子邮件 FROM TblAccountRequest WHERE Email = @ Email )
BEGIN
SELECT -1 - 电子邮件存在。
END
ELSE IF EXISTS ( SELECT CNIC FROM TblAccountRequest WHERE CNIC = @ CNIC )
BEGIN
SELECT -2 - CNIC存在
END
ELSE IF EXISTS ( SELECT 电子邮件 FROM TblUser WHERE Email = @ Email )
BEGIN
SELECT -3 - 电子邮件存在。
END
ELSE IF EXISTS ( SELECT NIC FROM TblUser WHERE NIC = @ CNIC )
BEGIN
SELECT -4 - CNIC存在。
END
ElSE
BEGIN
插入 到 TblAccountRequest(FirstName,LastName,CNIC,Email,选区,Party,partyjoninson,RequestDate,IsAccepted)
值( @ FirstName , @ LastName , @ CNIC , @ Email ,( SELECT 代码 FROM TblConstituency WHERE ConstID = @ Constituency ),( SELECT PartyName FROM TblParty WHERE PartyId = @ Party ),< span class =code-sdkkeyword> @ PartyJoiningDate ,GETDATE(), 0 ) SELECT @@ IDENTITY
SELECT SCOPE_IDENTITY () - 请求ID
SET @ success = 1
END
END TRY
BEGIN CATCH
SET @ success = 0
END CATCH
END
解析DateTime;
if (DateTime.TryParseExact(tbxpartyjoinson.Text, dd-MM-yyyy,
CultureInfo.CurrentCulture,DateTimeStyles.None, out 解析))
{
db1.sqlcmd.Parameters.AddWithValue( @ PartyJoiningDate,已解析);
} 其他
{
// 转换错误,将空值或日期时间最小值设置为参数
// 或如果这是必需参数,向用户显示错误并退出操作
}
请确保从日历日期时间格式,但为了正确的结果使用RadDatePicker控件这是telerik控件,这个控件返回信任数据。
请下载此DLL用于telerik控件Telerik.Web.UI.dll。
并使用如下:
< telerik:raddatepicker id = dtpRequestDate runat = server < span class =code-attribute> allowcustomtext = false xmlns:telerik = #unknown >
ShowPopupOnFocus =TrueMarkFirstMatch =truePopupDirection =TopRightSkin =Vista
Culture =English(United States)meta:resourcekey =dtpRequestDateResource1>
< calendar < span class =code-attribute> usecolumnheadersasselectors = False userowheadersasselectors = False viewselectortext = x >
< / calendar >
< dateinput dateformat = dd / MM / yyyy displaydateformat = dd / MM / yyyy labelcssclass = >
Width =>
< / dateinput >
< datepopupbutton cssclass = hoverimageurl = imageurl = / >
< / telerik:raddatepicker > 跨度>
I am inserting user data into the sql table, but on submitting it gives the following error.
System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.Convert.ToDateTime(String value) at Registration_Requestaccount.BtnSubmit_Click(Object sender, EventArgs e) in e:\ECCII\Registration\Requestaccount.aspx.cs:line 166
Here is my code:
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolkit:ToolkitScriptManager>
<asp:TextBox ID="tbxpartyjoinson" runat="server" CssClass="TextBoxClass" Width="50%" TextMode="SingleLine" ToolTip="Enter Your Email Address" AutoCompleteType="Disabled" placeholder="E.g. 01-03-2010"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="tbxpartyjoinson" PopupPosition="Right" Format="dd-MM-yyyy"></ajaxToolkit:CalendarExtender>
<asp:RequiredFieldValidator ID="rvjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ErrorMessage="Please Enter Your Date of Joining the Party" Text="*" Font-Names="Calibri" Font-Size="medium" ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revjoiningdate" runat="server" Display="None" ControlToValidate="tbxpartyjoinson" ValidationExpression="^(0[1-9]|1[0-9]|2[0-9]|3[1-2])[-](0[1-9]|1[0-2])[-](1[9][0-9][0-9]|2[0][0-9][0-9])$" ErrorMessage="Date should be in the format 31/12/2014" Text="*" Font-Names="Calibri" Font-Size="Small" ForeColor="Red"></asp:RegularExpressionValidator>
db1.sqlcmd = new SqlCommand("uspAccountRequest");
using (SqlDataAdapter sda = new SqlDataAdapter())
{
db1.sqlcmd.CommandType = CommandType.StoredProcedure;
db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname);
db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname);
db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic);
db1.sqlcmd.Parameters.AddWithValue("@Email", email);
db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue);
db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text));
db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue);
db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit);
db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output;
db1.sqlcmd.Connection = db1.sqlcon;
db1.sqlcon.Open();
reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar());
success = Convert.ToBoolean(db1.sqlcmd.Parameters["@success"].Value);
CREATE PROC uspAccountRequest
@success bit out,
@FirstName varchar(20), @LastName varchar(20), @CNIC bigint, @Email varchar(50),@Constituency int,@Party int,@PartyJoiningDate datetime
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
IF EXISTS(SELECT Email FROM TblAccountRequest WHERE Email = @Email)
BEGIN
SELECT -1 -- Email exists.
END
ELSE IF EXISTS (SELECT CNIC FROM TblAccountRequest WHERE CNIC = @CNIC)
BEGIN
SELECT -2 -- CNIC exists
END
ELSE IF EXISTS(SELECT Email FROM TblUser WHERE Email = @Email)
BEGIN
SELECT -3 -- Email exists.
END
ELSE IF EXISTS(SELECT NIC FROM TblUser WHERE NIC = @CNIC)
BEGIN
SELECT -4 -- CNIC exists exists.
END
ElSE
BEGIN
Insert into TblAccountRequest (FirstName, LastName, CNIC, Email, Constituency, Party, partyjoninson, RequestDate, IsAccepted)
Values (@FirstName,@LastName,@CNIC,@Email,(SELECT Code FROM TblConstituency WHERE ConstID = @Constituency),(SELECT PartyName FROM TblParty WHERE PartyId = @Party),@PartyJoiningDate,GETDATE(),0) SELECT @@IDENTITY
SELECT SCOPE_IDENTITY() -- Request ID
SET @success = 1
END
END TRY
BEGIN CATCH
SET @success = 0
END CATCH
END
" ErrorMessage="Date should be in the format 31/12/2014" Text="*" Font-Names="Calibri" Font-Size="Small" ForeColor="Red"></asp:RegularExpressionValidator>
db1.sqlcmd = new SqlCommand("uspAccountRequest"); using (SqlDataAdapter sda = new SqlDataAdapter()) { db1.sqlcmd.CommandType = CommandType.StoredProcedure; db1.sqlcmd.Parameters.AddWithValue("@FirstName", Firstname); db1.sqlcmd.Parameters.AddWithValue("@LastName", Lastname); db1.sqlcmd.Parameters.AddWithValue("@CNIC", cnic); db1.sqlcmd.Parameters.AddWithValue("@Email", email); db1.sqlcmd.Parameters.AddWithValue("@Party", DDParty.SelectedValue); db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", Convert.ToDateTime(tbxpartyjoinson.Text)); db1.sqlcmd.Parameters.AddWithValue("@Constituency", DDConstituency.SelectedValue); db1.sqlcmd.Parameters.Add("@success", SqlDbType.Bit); db1.sqlcmd.Parameters["@success"].Direction = ParameterDirection.Output; db1.sqlcmd.Connection = db1.sqlcon; db1.sqlcon.Open(); reqid = Convert.ToInt32(db1.sqlcmd.ExecuteScalar()); success = Convert.ToBoolean(db1.sqlcmd.Parameters["@success"].Value);
CREATE PROC uspAccountRequest @success bit out, @FirstName varchar(20), @LastName varchar(20), @CNIC bigint, @Email varchar(50),@Constituency int,@Party int,@PartyJoiningDate datetime AS BEGIN SET NOCOUNT ON; BEGIN TRY IF EXISTS(SELECT Email FROM TblAccountRequest WHERE Email = @Email) BEGIN SELECT -1 -- Email exists. END ELSE IF EXISTS (SELECT CNIC FROM TblAccountRequest WHERE CNIC = @CNIC) BEGIN SELECT -2 -- CNIC exists END ELSE IF EXISTS(SELECT Email FROM TblUser WHERE Email = @Email) BEGIN SELECT -3 -- Email exists. END ELSE IF EXISTS(SELECT NIC FROM TblUser WHERE NIC = @CNIC) BEGIN SELECT -4 -- CNIC exists exists. END ElSE BEGIN Insert into TblAccountRequest (FirstName, LastName, CNIC, Email, Constituency, Party, partyjoninson, RequestDate, IsAccepted) Values (@FirstName,@LastName,@CNIC,@Email,(SELECT Code FROM TblConstituency WHERE ConstID = @Constituency),(SELECT PartyName FROM TblParty WHERE PartyId = @Party),@PartyJoiningDate,GETDATE(),0) SELECT @@IDENTITY SELECT SCOPE_IDENTITY() -- Request ID SET @success = 1 END END TRY BEGIN CATCH SET @success = 0 END CATCH END
DateTime parsed; if (DateTime.TryParseExact(tbxpartyjoinson.Text, "dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out parsed)) { db1.sqlcmd.Parameters.AddWithValue("@PartyJoiningDate", parsed); }else { // error in conversion, set null or date time min value to parameter // or if this is required parameter, show error to user and exit the operation }
Please sure from calender datetime format, but for correct result use RadDatePicker control this is telerik control, this control return trust data.
please download this DLL for telerik control Telerik.Web.UI.dll.
and use it as following:
<telerik:raddatepicker id="dtpRequestDate" runat="server" allowcustomtext="false" xmlns:telerik="#unknown"> ShowPopupOnFocus="True" MarkFirstMatch="true" PopupDirection="TopRight" Skin="Vista" Culture="English (United States)" meta:resourcekey="dtpRequestDateResource1"> <calendar usecolumnheadersasselectors="False" userowheadersasselectors="False" viewselectortext="x"> </calendar> <dateinput dateformat="dd/MM/yyyy" displaydateformat="dd/MM/yyyy" labelcssclass=""> Width=""> </dateinput> <datepopupbutton cssclass="" hoverimageurl="" imageurl="" /> </telerik:raddatepicker>
这篇关于字符串未被识别为有效的DateTime错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!