Parse TextBox à SqlDbType.Date en tant que "dd.MM.yyyy"

Je veux que les dates ressemblent à celles de dd.MM.yyyy. Moi comme ça, qui est indépendant de la culture.

Je ne sais pas comment faire les choses correctement.

cmd.Parameters.Add("@eventdate", SqlDbType.Date).Value = dateAddTxtBox.Text; 

Exception de format:

La string n'a pas été reconnue comme une date et heure valide

J'ai essayé de nombreux extraits comme DateTime.ParseExact(dateAddTxtBox.Text, "dd.MM.yyyy", null) ou en utilisant System.Globalization.CultureInfo.InvariantCulture ainsi. Rien n'a aidé!

Ou peut-être que cela sera mieux fait dans la procédure SQL, n'est-ce pas?

 CREATE PROCEDURE add_history @user VARCHAR(20), @eventdate DATE, ... INSERT INTO History(userid, eventdate, ...) VALUES ((SELECT userid FROM Users.SUsers WHERE suname=@user), @eventdate, ...) 

Tout a bien fonctionné alors que je n'ai pas formaté mes TextBox avec un motif:

 <asp:TextBox id="dateAddTxtBox" runat="server" ReadOnly="True" /> <asp:CalendarExtender ID="AddTxtBoxCalendarExtender" runat="server" Enabled="True" TargetControlID="dateAddTxtBox" Format="dd.MM.yyyy" ... /> 

UPD:

Une petite mention >> il y avait un atsortingbut en lecture seule sur TextBox. Voilà pourquoi ça n'a pas marché!

Maintenant, la question est, est-il correct d'ignorer ReadOnly="True" ? Je ne veux pas que les users modifient les dates directement dans la boîte.

UPD2:

ReadOnly="True" n'a aucun sens. Cela fonctionne bien comme il se doit! Je ne sais pas pourquoi.

Ne spécifiez pas SqlDbType.Date . Fiez-vous plutôt à la détection automatique, cela fonctionnera:

 System.DateTime dateValue = DateTime.ParseExact(...); command.Parameters.AddWithValue("@name", dateValue);