如何获取MVC模型属性以返回Date而不是DateTime?

时间:2019-06-20 16:14:39

标签: c# .net model-view-controller model odata

我有一个具有DateTime属性的数据库模型。但是,此属性实际上是一个日期。在客户端上进行排序/筛选时,多余的时间导致了问题。许多表/客户端组件都有此问题。

我希望可以在模型级别修复此问题,并且仅在进行以下修改后才能检索“日期”部分。

private DateTime invoiceDate;
[Required]
public DateTime InvoiceDate { get => invoiceDate.Date; set =>invoiceDate = value; }

但是,这似乎不起作用。这样可能吗?

编辑:我发现C#允许在模型上使用更具体的DataType规范-https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model-for-an-asp-net-mvc-application

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime EnrollmentDate { get; set; }

但是,当我点击我的API时,我仍然可以获得完整的数据库信息

  "InvoiceDate": "2019-06-14T00:00:00-07:00"

C#为什么不使用提供的额外规范来解决此问题?

编辑:

我还发现this helpful thread建议向该属性添加JSON转换器,但这也不能解决问题。时间仍在发送。

2 个答案:

答案 0 :(得分:0)

您可以将Bind与排除属性一起使用

[Bind(Exclude="InvoiceDate")]
    public class YourModel{

    }

答案 1 :(得分:0)

我最终通过OData请求修改使它起作用。我必须编辑字符串以将属性包装在data(prop)中,然后必须编辑值以从javascript的DateTime.ToString yyyy-MM-dd

中删除时间