1

我有一些格式奇怪的日期(dd.MM.YYYY)。这是企业希望它展示的方式。所以,我需要一个自定义模型活页夹来读取这个日期。我有这个解决方案工作正常,但是当我切换到使用 OWIN 时,它就停止了工作。这是我现在的代码:

我的 OWIN 启动文件:

    公共无效配置(IAppBuilder 应用程序)
    {
      var config = new HttpConfiguration();
      config.BindParameter(typeof(DateTime?), new DateTimeWebApiBinder());
      config.BindParameter(typeof(DateTime), new DateTimeWebApiBinder());  
      app.UseWebApi(config);
    }

自定义模型绑定器

    公共类 DateTimeWebApiBinder : IModelBinder
    {
      public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
      {
        var incomingDate = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (bindingContext.ModelType == typeof(DateTime) && string.IsNullOrEmpty(incomingDate.AttemptedValue))
        {
          返回假;
        }
        日期时间解析日期;
        if (DateTime.TryParseExact(incomingDate.AttemptedValue, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
        {
          bindingContext.Model = parsedDate;
          返回真;
        }
        返回假;
      }
    }

发生的事情是自定义模型绑定器没有触发。我怀疑它与 OWIN 设置有关。

4

2 回答 2

1

你可以试试:

ContainerBuilder builder = new ContainerBuilder();
builder.RegisterWebApiModelBinderProvider();
builder.RegisterType<DateTimeWebApiBinder>().AsModelBinderForTypes(typeof(DateTime));


var resolver = new AutofacWebApiDependencyResolver(builder.Build());

var config = new HttpConfiguration
{
   DependencyResolver = resolver
};
app.UseWebApi(config);
于 2019-07-23T03:01:24.500 回答
0

根据这篇文章,你应该把[ModelBinder(typeof(DateTimeWebApiBinder))]你的控制器的参数。

于 2015-03-05T14:38:17.923 回答