【发布时间】:2020-11-19 08:48:18
【问题描述】:
我尝试以dd/mm/yyyy 格式发送日期作为查询字符串参数,但绑定日期属性对我不起作用,只有当我发送日期美国格式 mm/dd/yyyy 时,知道如何解决?
【问题讨论】:
-
嗨@hooliday,关于这个案例有什么更新吗?
我尝试以dd/mm/yyyy 格式发送日期作为查询字符串参数,但绑定日期属性对我不起作用,只有当我发送日期美国格式 mm/dd/yyyy 时,知道如何解决?
【问题讨论】:
一般我们使用Custom model binding来解决这种情况。
您可以在下面查看我的代码示例。
行动:
[HttpGet]
public object Demo([ModelBinder(BinderType = typeof(DateTimeModelBinder))] DateTime MyTime)
{
return Ok();
}
日期时间模型绑定器:
public class DateTimeModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null)
{
throw new ArgumentNullException(nameof(bindingContext));
}
var valueProviderResult = bindingContext.ValueProvider.GetValue("MyTime");
if (valueProviderResult == ValueProviderResult.None)
{
return Task.CompletedTask;
}
var value = valueProviderResult.FirstValue;
if (string.IsNullOrEmpty(value))
{
return Task.CompletedTask;
}
var TestTime = DateTime.ParseExact(value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
bindingContext.Result = ModelBindingResult.Success(TestTime);
return Task.CompletedTask;
}
}
网址:https://localhost:xxxx/api/xxx/?mytime=19/05/2020
【讨论】:
【讨论】: