Если мне нужно извлечь объект из пользовательского связывателя модели, должен ли связыватель взаимодействовать со слоем службы, уровнем хранилища или ...? - PullRequest
4 голосов
/ 13 июля 2009

Если у меня есть класс, подобный этому:

public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public Pet myPet { get; set; }
}

Когда я создаю привязку пользовательской модели, сообщение из моей формы не будет отправлять в Pet, оно будет отправлять данные, подобные следующим: firstName: "myFirstName" lastName: "myLastName" myPet: "myPetsName"

Поскольку передается имя питомца, а не фактический объект питомца, объект питомца необходимо извлечь из подшивки модели.

Мой вопрос заключается в том, должен ли механизм связывания модели взаимодействовать со Служебным слоем, слоем репозитория или даже должен извлекать Pet? Проблема с сервисным уровнем заключается в том, что у меня нет доступа к ModelState при инициализации сервиса: ((this.ModelState) выдает ошибку)

_petService = new PetService(new ModelStateWrapper(this.ModelState));

Если мне понадобится связыватель модели для создания объекта Person, тогда питомца нужно будет как-то назначить ... как мне это сделать?

1 Ответ

2 голосов
/ 13 июля 2009

Я использую модель представления / представления вместо привязки к бизнес-объектам. Помните, что ваши пользователи могут вводить недопустимые значения, и вам нужно будет повторно отобразить эти недопустимые значения пользователю, когда они предложат исправить свои ошибки. Но ваши "реальные" бизнес-объекты, вероятно, не примут недопустимые значения. Таким образом, модель представления должна допускать любой пользовательский ввод, даже ввод бизнес-объектов не будет принят.

Это облегчает привязку. Для привязки не требуется использовать репозиторий, только при обновлении бизнес-объекта с помощью (действительного) пользовательского ввода.

...