Создайте новый класс PhoneNumberList
и используйте его вместо IEnumerable<string>
в вашей модели. Затем вы можете создать пользовательский механизм связывания для PhoneNumberList
, скопировав существующий код. В противном случае привязка к существующей модели Position
не будет затронута.
В качестве альтернативы (но более сложное решение) - вы можете сохранить существующее определение IEnumerable<string>
. Вы бы создали подкласс DefaultModelBinder
и изучили бы PropertyMetadata
любого свойства IEnumerable<string>
. Если он содержит некоторые идентифицирующие метаданные, которые вы добавили (например, через атрибут), тогда он может выполнить пользовательскую привязку, в противном случае он возвращается к базовой привязке.
В качестве отступления - вы также можете рассмотреть возможность использования bindingContext.ModelName
вместо жесткого кодирования ключа провайдера значений для "телефонов":
var phones = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);