【问题标题】:SQL Server 2012 Date datatype contains 12:00:00AMSQL Server 2012 日期数据类型包含 12:00:00AM
【发布时间】:2014-04-30 13:24:09
【问题描述】:

我有一个 MVC CRUD 站点,它有一个 Date Approved 文本框。创建新条目后,它会在 SQL Sever 中正确存储为“dd-MM-yyyy”。当我想更新一个条目时, Date Required 文本框包含日期 AND 12:00:00AM 。我猜这是因为 SQL Server 是日期数据类型,而 .Net 是日期时间。知道如何摆脱 12:00:00AM 吗?

尝试失败...

我已经尝试将它添加到我的视图模型中

[DisplayFormat(DataFormatString = "{0:MM-dd-yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage="Required")]
[DataType(DataType.Date)]
[Display(Name="Date Requested")]
public DateTime?  Date_Requested { get; set; }

还有……

string test = Convert.ToDateTime(model.Date_Requested).ToString;

编辑 html文本框

@Html.TextBoxFor(model => model.Date_Requested,new {@class="datepicker" })

编辑 JQuery DatePicker

$(".datepicker").datepicker({
    onSelect: function () {
        $(this).valid();
    }
});

【问题讨论】:

  • 您能告诉我们您在相应视图中使用什么代码来显示该文本框吗? (即文本框本身和视图模型定义)
  • 我已经添加了文本框
  • 尝试使用EditorFor 而不是TextBoxFor
  • 我还添加了 JQuery DatePicker 类

标签: c# sql-server asp.net-mvc


【解决方案1】:

你可以添加另一个属性,使用ToShortDateString:

public string DateRequestedShortDate 
{ 
    get 
    {
        return Date_Requested == null ? "" : Date_Requested.ToShortDateString();
    }
}

或简单地将文本框值设置为 ShortDateString 以保持绑定

【讨论】:

  • 我收到错误“无法将方法组 'toshortdatestring' 转换为非委托类型 'string'”以进行转换 .ToShortDateString() 。代码列在问题中
  • cannot convert method group 'toshortdatestring' to non-delegate type 'string'" 在您忘记 () 括号时发生 :) 它假定您正在尝试传递方法而不是方法的返回值。
  • 与其说是一个好的电话,不如说是对错误的丰富经验;)
【解决方案2】:

TextBoxFor 不支持格式属性(不确定这是有意的还是错误的)。你可以使用EditorFor:

@Html.EditorFor(model => model.Date_Requested,new {@class="datepicker" })

或者在TextBoxFor中设置格式:

@Html.TextBoxFor(model => model.Date_Requested,
                          new {
                               @class="datepicker", 
                               @Value = Model.Date_Requested.ToString("MM-dd-yyyy") 
                              });

【讨论】:

    【解决方案3】:

    从上面扩展琼斯的答案。

    public string DateRequestedShortDate 
    { 
    get 
    {
        return Date_Requested == null ? "" : Date.Parse(Date_Requested).ToShortDateString();
    }
    }
    

    Parse 不会弄乱插入到 SQL 中的数据,希望对您有所帮助。

    【讨论】:

    • 旁注:如果您想参考 Stack Overflow 上的其他答案,您应该避免使用“位置”语言,例如“以上”。由于投票和随机化,“上方”或“下方”的答案可能不会在稍后的时间点显示。通常,最好包含指向您要参考的答案的链接。
    • 我不确定为什么 Parse 在这里是必要的。你能详细说明一下吗?
    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多