ASP.NET Core передает нулевые параметры конечным точкам контроллераC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Core передает нулевые параметры конечным точкам контроллера

Сообщение Anonymous »


Используя привязку модели, можно передать комплексный тип 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 из формы вернуть Задача.ЗавершеннаяЗадача; } }
Изображение

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»