ASP.NET MVC Core — расширение привязки модели для обработки пустых списковC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 ASP.NET MVC Core — расширение привязки модели для обработки пустых списков

Сообщение Гость »


Поведением по умолчанию для связывателя модели является возврат значения null для перечислимых свойств, если запрос содержит пустой массив. Вместо этого я хотел бы вернуть пустую коллекцию. Для других свойств я хочу сохранить поведение по умолчанию.

Я перехожу с ASP.NET MVC на ASP.NET MVC Core. В старом проекте у меня была специальная привязка модели, расширяющая DefaultModelBinder. Однако DefaultModelBinder не существует в Core.

публичный класс EmptyListModelBinder: DefaultModelBinder { защищенный объект переопределения CreateModel (ControllerContext контроллерКонтекст, ModelBindingContext привязкаКонтекст, Тип modelType) { var model = base.CreateModel(controllerContext,bindingContext, modelType); if (модель == null || модель IEnumerable) возвратная модель; foreach (свойство var в modelType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { значение объекта = свойство.GetValue(модель); если (значение! = ноль) продолжать; если (свойство.PropertyType.IsArray) { значение = Array.CreateInstance(property.PropertyType.GetElementType(), 0); свойство.SetValue(модель, значение); } иначе, если (свойство.PropertyType.IsGenericType) { Введите типToCreate; Тип genericTypeDefinition = property.PropertyType.GetGenericTypeDefinition(); if (genericTypeDefinition == typeof(IDictionary)) { typeToCreate = typeof(Dictionary).MakeGenericType(property.PropertyType.GetGenericArguments()); } иначе, если (genericTypeDefinition == typeof(IEnumerable) || genericTypeDefinition == typeof(ICollection) || genericTypeDefinition == typeof(IList) || genericTypeDefinition == typeof(List)) { typeToCreate = typeof(List).MakeGenericType(property.PropertyType.GetGenericArguments()); } еще { продолжать; } значение = Activator.CreateInstance(typeToCreate); свойство.SetValue(модель, значение); } } возвратная модель; } } Я мог бы расширить ComplexTypeModelBinder, но он устарел. Его заменяет ComplexObjectModelBinder, который запечатан и не может быть унаследован или использован для композиции.

Как добиться такого поведения в ASP.NET Core?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Столкновение с проблемой привязки модели и обработки объекта в моем приложении ASP.NET Core MVC.
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Столкновение с проблемой привязки модели и обработки объекта в моем приложении ASP.NET Core MVC.
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как добиться того же эффекта, что и ASP.Net MVC Server.Transfer в ASP.Net Core MVC?
    Anonymous » » в форуме C#
    0 Ответы
    98 Просмотры
    Последнее сообщение Anonymous
  • Как добиться того же эффекта, что и ASP.NET MVC Server.Transfer в ASP.NET Core MVC?
    Anonymous » » в форуме C#
    0 Ответы
    105 Просмотры
    Последнее сообщение Anonymous
  • Реализация выхода из Azure B2C в приложениях ASP.NET Core MVC и ASP.NET MVC.
    Anonymous » » в форуме C#
    0 Ответы
    109 Просмотры
    Последнее сообщение Anonymous

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