Модель MS MVC3, связывающая объект - PullRequest
2 голосов
/ 24 июля 2011

Может ли кто-нибудь помочь мне лучше понять DefaultModelBinder и как он обрабатывает привязку модели, которая имеет свойство типа object?

Я скачал код и попытался отследить его, но все еще чешу головунемного.

Допустим, у меня есть такая модель:

public class MyModel{
    public object MyProperty{ get; set; }
}

И предположим, что все мои формы сгенерированы правильно (например: name = "MyModel.MyProperty")

Что происходит для различных случаев, когда MyProperty фактически установлен на экземпляры определенных типов?

В моем случае я извлекаю пользовательский связыватель из DefaultModelBinder и переопределяю CreateModel (), чтобы вернуть MyModel с установленным MyPropertyправильный тип.

Я заметил, что если я установил MyProperty в строку, то по какой-то причине DefaultModelBinder :: BindProperty () возвращает строку [] размера 1 с содержимым поля формы, а не простострока.Почему?

Если MyProperty является более сложным типом, хотя все поля формы имеют правильные имена (например, name = "MyModel.MyProperty.FirstName"), связывание, похоже, не работает вообще.

Кто-нибудь имел дело со сложным / абстрактным сценарием связывания модели, подобным этому, раньше?Есть ли способ лучше?(Я знаю, что это странно, но мне действительно нужно, чтобы MyProperty объекта MyModel был объектом, потому что я не могу знать, какой это тип Type, до времени выполнения)

1 Ответ

0 голосов
/ 25 июля 2011

Подумайте об использовании интерфейса и используйте для него пользовательское связующее. Это возможно? Тогда нет неизвестного типа объекта во время выполнения.

...