我如何排序一个短日期字符串,如果它是一个日期在MVC 5模型

本文关键字:一个 日期 模型 MVC 如果 何排序 排序 字符串 | 更新日期: 2023-09-27 18:09:43

我在MVC 5 c#模型中有一个映射到SQL表的字段。源数据的类型为nvarchar(10),以满足其他也使用该表的人的需要。

在最近的迭代中,用户还希望能够按该列排序,这意味着我需要将其转换为日期时间值(以便正确排序)并显示为短日期。

我知道我可以使这个字段私有,并创建一个单独的公共函数,将其转换为日期,但我想知道是否有一种更紧凑的方式,我可以在一个函数中完成这一切。我四处搜索,但没有看到任何我所描述的例子。这可能吗?

换句话说,我想将其显示为短日期,但将其排序为日期。我是在正确的轨道上,还是我错过了什么?

[Required]
[StringLength(10)]        
[Display(Name = "Entry Date")]
[DisplayFormat(DataFormatString="{0:d}")]
public string EntryDate { get; set; }        

我如何排序一个短日期字符串,如果它是一个日期在MVC 5模型

如果数据表示日期,则添加一个日期属性:

public DateTime? EntryDateValue
{
    get
    {
        DateTime dateValue;
        if (DateTime.TryParse(EntryDate, out dateValue))
            return dateValue;
        return null;
    }
    set
    {
        // parse "value" to the string format you want
        // and store it in EntryDate
    }
}

将视图绑定到该属性,根据需要使用.ToString("...")格式化输出,并允许在DateTime?而不是字符串上进行排序。本质上是为应用程序代码创建一个传递属性,模糊了后面的"字符串类型"值。

一般来说,为文本显示调整正确的备份数据要比调整文本显示使其像备份数据一样更容易。