空文本框和日期时间空

时间:2014-05-08 00:12:01

标签: c# asp.net datetime textbox null

我有一个表示日期的文本框,我想将其解析为 DateTime ,但有时这个 textBox 可以是空字符串,我想发送 它以数据库为空或为空日期,我该怎么办?我正在使用Web服务,我认为以下内容将传递null:

txtCommentDateCreateNote.Text != string.Empty ? DateTime.Parse(txtCommentDateCreateNote.Text) : DateTime.MinValue,

但它返回

"SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM."

下面的ASP.NET和c#代码:

protected void cmdSaveCreateNote_Click(object sender, EventArgs e)
{
    ShortSaleInvestorReviewServiceClient _service = new ShortSaleInvestorReviewServiceClient();
    int createApp;

    createApp = _service.AddNote("10002",txtCommentDateCreateNote.Text != string.Empty ? DateTime.Parse(txtCommentDateCreateNote.Text) : DateTime.MinValue, 2, txtNoteCreateNote.Text); //Created by ID 
}

2 个答案:

答案 0 :(得分:3)

您试图传递DateTime.MinValue,1/1/0001 12:00:00 AM,这是一种常见技巧。但是,您发现SQL Server日期时间类型不喜欢1753之前的日期。

DateTime是一个结构,不能为null。但是,可以使用可以为空的版本。你可以这样声明......

DateTime? anullableDateTime;

如果.AddNote方法具有可为空的DateTime参数,则全部设置完毕。只需像这样设置一个空...

txtCommentDateCreateNote.Text != string.Empty ? DateTime.Parse(txtCommentDateCreateNote.Text) : null

如果没有,请确定您在UI中将其视为空的最短日期。 1/1/1900是最受欢迎的,并且这样做......

 txtCommentDateCreateNote.Text != string.Empty ? DateTime.Parse(txtCommentDateCreateNote.Text) : new DateTime(1900,1,1)

检索此值时,只需设置textbox.Text = null。保存实际日期具有额外的优势,即不必处理数据库查询中的空值。

答案 1 :(得分:1)

试试这个

string.IsNullOrEmpty(txtCommentDateCreateNote.Text) ? (DateTime?)null : DateTime.Parse(txtCommentDateCreateNote.Text);