Используя привязку модели, можно передать комплексный тип NULL в конечную точку контроллера.
Это решение не работает для всех конечных точек контроллера, перестроить модель также непросто.
Есть ли лучшее решение для передачи параметра сложного типа NULL в ASP.NET Core?
Эта функция работает должным образом (допускает значения NULL) при использовании .NET Standard без каких-либо изменений.
Использование следующих IModelBinder и IModelBinderProvider:
публичный класс NullModelBinderProvider: IModelBinderProvider { общедоступный IModelBinder GetBinder (контекст ModelBinderProviderContext) { если (контекст == ноль) { выдать новое ArgumentNullException("контекст"); } если (context.Metadata.ModelType == typeof(BreakSize)) { вернуть новый BinderTypeModelBinder(typeof(NullModelBinder)); } вернуть ноль; } } общедоступный класс NullModelBinder: IModelBinder { общедоступная задача BindModelAsync (ModelBindingContextbindingContext) { если (bindingContext == null) выдать новое ArgumentNullException("bindingContext"); // Если значение равно нулю, передаем его контроллеру — это работает if (bindingContext.HttpContext.Request.Form.ContainsKey(bindingContext.FieldName) && string.IsNullOrEmpty(bindingContext.HttpContext.Request.Form[bindingContext.FieldName])) привязкаКонтекст.Результат = ModelBindingResult.Success(null); еще привязкаContext.Result = ModelBindingResult.Success(new BreakSize()); // Необходимо установить значения BreakSize из формы вернуть Задача.ЗавершеннаяЗадача; } }

Мобильная версия