У меня есть модель со следующими свойствами:MVC модель привязки возврата Массивы для объектов
public class MyModel{
public object Name{get;set;}
}
Имя свойства визуализируется как текстовое поле на форму MVC. Когда форма MVC отправлена, свойство Name задается с типом Array [String] с длиной 1 и моим значением в нем. Почему связующее устройство модели создает массив, а не просто устанавливает свойство для строкового объекта?
К сожалению, я не могу изменить тип возвращаемого свойства, потому что это свойство находится в третьей части кода.
Некоторые подробнее:
У нас есть два сайта, один сайт связывает свойство в виде строки другой сайт связывает его как массив [String]. Глядя на трассировку стека, оба события привязки проходят через связующее устройство по умолчанию. Итак, проблема у нас в том, что отличается от нашей первой среды для нашей второй? Оба используют одни и те же версии сборки и конфигурации.
Вы можете показать ваш 'View'? –
Это, вероятно, просто поведение DefaultModelBinder. Возможно, вы можете настроить его, внедряя свой собственный IModelBinder, который делает то, что вы хотите для свойств модели объекта типа. – Rudism
После дальнейшего расследования (много декомпиляции и ругательства) мы обнаружили, что в стороннем коде есть контейнер DI, который не разрешает корректное полевое связующее. Спасибо тем, кто прочитал и прокомментировал этот вопрос. –