Мое приложение OWIN не вызывает привязку моей пользовательской модели
У меня есть некоторые даты, которые приходят в странном формате (дд.ММ.ГГГГ). Это то, как бизнес хочет, чтобы это отображалось. Итак, мне нужна пользовательская модель связующего, чтобы прочитать эту дату. У меня это решение работало нормально, но когда я перешел на использование OWIN, то оно перестало работать. Вот мой код прямо сейчас:
Мой файл запуска OWIN:
Конфигурация public void (приложение IAppBuilder) { var config = new HttpConfiguration(); config.BindParameter(typeof(DateTime?), новый DateTimeWebApiBinder()); config.BindParameter(typeof(DateTime), новый DateTimeWebApiBinder()); app.UseWebApi(конфигурации); }
Пользовательская модель Binder
открытый класс DateTimeWebApiBinder: IModelBinder { public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) { varcomingDate = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); if (bindingContext.ModelType == typeof(DateTime) && string.IsNullOrEmpty(comingDate.AttemptedValue)) { вернуть ложь; } DateTime parsedDate; if (DateTime.TryParseExact(comingDate.AttemptedValue, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate)) { bindingContext.Model = parsedDate; вернуть истину; } вернуть ложь; } }
То, что происходит, это связка пользовательской модели не срабатывает. Я подозреваю, что это как-то связано с настройкой OWIN.
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);
Согласно этой статье, вы должны поставить [ModelBinder(typeof(DateTimeWebApiBinder))]
по параметру вашего контроллера.