解析文本框为SqlDbType.日期为“dd. mm .yyyy”

本文关键字:dd mm yyyy SqlDbType 文本 日期 | 更新日期: 2023-09-27 17:51:14

我希望日期在页面上看起来像dd.MM.yyyy。我喜欢这样,这是文化无关的。

我不知道怎么做才对。

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

格式例外:

字符串未被识别为有效的日期时间

我尝试了许多片段,如DateTime.ParseExact(dateAddTxtBox.Text, "dd.MM.yyyy", null)或使用System.Globalization.CultureInfo.InvariantCulture。没有什么帮助!

或者也许在SQL过程方面做得更好,不是吗?

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

所有的工作都很好,虽然我没有格式化我的文本框模式:

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

乌利希期刊指南:

稍微提一下>>在TextBox上有一个只读属性。这就是为什么它不起作用!

现在的问题是,跳过ReadOnly="True"是否正确?我不希望用户直接在框中编辑日期。

UPD2:

ReadOnly="True"完全没有意义。它工作得很好,因为它应该!我不知道为什么。

解析文本框为SqlDbType.日期为“dd. mm .yyyy”

不指定SqlDbType.Date。依赖于自动检测,它将工作:

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