2010-03-24 2 views
1

Это общая модель связывания вопрос, который относится к MVC 1 & 2. Я интересно, если MVC2 будет лучше для этого, но вот мой вопрос:несколько пользовательских модели связующих для одной модели в ASP.NET MVC

у меня есть довольно сложная модель:

public interface IEvent 
    public int Id 
    public string Title 
    public List<EventContact> Contacts 
    public List<EventDatesLocations> DatesLocations 

public class EventDatesLocations 
    public int Id 
    public DateTime StartDate 
    public DateTime EndDate 
    public List<EventLocation> Locations 

у меня есть пользовательские модели связующие для моего класса IEvent, который делает в основном все обязательным для IEvent. Я называю стандартное связующее устройство для привязки списка Contacts, который хорошо работает.

Я готов начать пытаться связать вещи DatesLocations, но я хочу убедиться, что делаю все правильно.

В целом, я не уверен, что все детали привязки к модели понятны. Было бы лучше иметь несколько связующих устройств для списков в пределах IEvent или просто иметь один привязку модели IEvent (как я сейчас делаю), который вызывает связующее по умолчанию для списков, которые ему нужны.

Как это делают эксперты? : P

+1

Я m нет эксперта по привязке модели, однако я не думаю, что здесь есть что-то, что потребует настраиваемого связующего. Как вы привязываетесь к своим спискам? Вот статья о том, как их связывает связующее по умолчанию. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx – Ryan

+0

@Ryan. Основным мотиватором для привязки с использованием настраиваемого связующего является тот факт, что я использую интерфейс IEvent в качестве основного объекта события. Используя связующее устройство по умолчанию, он сразу сказал мне, что не может создать экземпляр IEvent. Это, и мне нужно связать определенные свойства на основе того, какой тип IEvent он есть. Я использую стандартное связующее устройство модели со спаренным значением. – Dan

ответ

0

Посмотрите на this question, чтобы увидеть привязку вложенной модели.

Надеемся, что вам нужно сделать некоторые привязки к различным реализациям IEvent, но затем вы хотите связать определенные свойства в зависимости от того, какой тип реализует IEvent. Я бы сказал, что это вообще плохо. Зачем? Потому что вы пытаетесь получить одно связующее устройство, зная об интерфейсе, зная о конкретных его реализациях.

Если вам требуется несколько классов для реализации IEvent (по какой-то причине), то вам, вероятно, понадобятся индивидуальные связующие для каждого (если спустить этот маршрут, хотя, поскольку они будут конкретными типами, тогда обязательное связующее должно работать), или вы необходимо расширить интерфейс IEvent, чтобы включить свойства, которые вы будете устанавливать на всех.

Помните Интерфейсы есть, чтобы определить контракт, который должен быть реализован ... вы не можете работать с объектами, которые реализуют его, а затем проверить другие свойства в зависимости от того, какой они :-)

Смежные вопросы