Я считаю, что проблема в том, что MvcScaffolding не знает, какое свойство должно представлять ваше текстовое поле. Шаблоны пытаются найти свойство-кандидат в классе, который, по его мнению, может представлять столбец, который будет иметь значение, представляющее свойство "text". Я видел код, и он ищет такие вещи, как «Имя», «Заголовок» и т. Д. Если он найдет один из них, он будет использовать это поле для свойства текста. Вот фактический код, который он использует:
static string[] displayPropertyNames = new[] { "Name", "Title", "LastName", "Surname", "Subject", "Count" };
Он будет использовать первый найденный файл, и если он вообще его не найдет, вы получите код, который у вас есть в данный момент. Это не идеально, потому что у вас может не быть ни одного из этих имен, и / или у вас может быть поле с одним из этих имен, но вы можете не захотеть, чтобы оно представляло текстовое значение в раскрывающемся списке.
Другим вариантом, который должен решить эту проблему, является создание частичного класса и присоединение атрибута DisplayColumn к типу модели, который вы привязываете к раскрывающемуся списку. Например:
[DisplayColumn("LocationName")] public partial class DropDownBoundType {}
Однако я обнаружил, что реализация частичного класса вызывает некоторые другие проблемы, когда генератор MvcScaffolding прекращает распознавать поля как ключи ассоциации. Таким образом, вместо выпадающих списков в некоторых случаях создаются текстовые поля. Не знаю, в чем проблема, и, возможно, это не повлияет на вас, но, к сожалению, я так осторожно поступаю так.
Также я заметил, что вы работаете с 9.7 и доступна новая версия 9.8. Я не думаю, что это решает вашу проблему, но затрагивает некоторые другие. Возможно, стоит потратить время на обновление и обновление.