MVC требует, чтобы в строго типизированных представлениях представление могло создать класс, используемый в этом представлении. Это означает конструктор без каких-либо параметров. И это имеет смысл. Люди, плохо знакомые с MVC, увидят подобное "а?" проблемы, когда они забывают / не в состоянии сделать параметры общедоступными, и все подобные связанные с этим ошибки появляются, когда представление пытается собраться (в отличие от ошибки компилятора).
Но что «интересно» в этом классе проблем с конструкторами без параметров, так это то, что свойство вашего класса также НЕ имеет конструктора без параметров. Я полагаю, это пессимистический подход?
Потратив некоторое время на изучение класса SelectList - класса, специфичного для MVC, - я хотел помочь некоторым людям сэкономить несколько минут / часов.
Этот действительно важный инструмент / класс для создания выпадающего списка имеет следующие конструкторы:
public SelectList (IEnumerable items);
public SelectList (IEnumerable items, object selectedValue);
public SelectList (IEnumerable items, string dataValueField, string dataTextField);
public SelectList (IEnumerable items, string dataValueField, string dataTextField, object selectedValue);
.. и, следовательно, если это свойства вашего класса (того, что использовалось для представления), MVC выдаст вам неуловимую ошибку «Нет конструктора без параметров».
НО, если вы создаете что-то вроде вспомогательного класса, вырезайте и вставляйте точный код из вашего исходного класса, а затем сделайте этот вспомогательный класс параметром (НЕ get / set) в вашем исходном классе; ты в порядке
И таким образом, вы можете использовать один вид для получения и сообщений. Что красивее:)
Лично я бы создал компилятор, чтобы распознавать ассоциации и требования строго типизированных представлений, или позволить раскрывающемуся списку (или другому «клиенту» списка SelectList) просто не работать, а не задаться вопросом, существует ли определенный уровень рекурсивной проверки на безпараметрических конструкторах.
К счастью, текущая версия кажется только верхнего уровня. Чувствуется, как взломать, и я надеюсь, что это по замыслу
НТН.