输入日期到webapi

时间:2018-11-05 10:29:39

标签: datetime asp.net-web-api2 model-binding fluentvalidation value-provider

我正在使用webapi2。我在模型中有一个属性是开始日期,其数据类型是datetime。我想以“ dd-mm-yyyy”格式传递日期。但是,如果我发送,我将收到400个错误的请求。你能帮我一下吗。注意,我正在使用Fluent验证进行模型验证。

public class Item      
{
    public  DateTime? StartDate { get; set; }
    public  string Id { get; set; }
}

2 个答案:

答案 0 :(得分:0)

  

我要将日期传递为“ dd-mm-yyyy”`

您有3个选择。

选项ISO8601

请勿将其作为“ dd-mm-yyyy”传递。而是以ISO8601格式(yyyy-MM-dd)传递。这是将DateTime序列化为字符串,然后在各层之间传递该字符串表示形式的正确方法。这种格式是一种标准的,使用广泛,明确的格式,据我所知,几乎所有框架都内置了将DateTime输出为该格式并从该格式进行解析的机制。

显示格式为“ dd-mm-yyyy”的DateTime是表示层关注的问题,应该放在此处,而不是“渗入”其他应用程序层。

选项格式化程序

使用自定义代码(例如Json Converte或ActionFilterAttribute)来读取传入的DateTime

选项字符串

改为接受字符串参数,并在控制器的方法中处理您自己的解析。


老实说,我不建议您使用最后两个选项。而是使用ISO8601:一种传达DateTime的标准,明确,被广泛接受的方法。

答案 1 :(得分:0)

我已经创建了一个自定义值提供程序工厂,并且正在使用默认的模型绑定。

BindingInflate()