2013-02-19 2 views
0

У меня есть настройка с Client s, которые имеют User s.MVC4 Modelbinding со свойствами класса

Просто, Client просто имеет

[Required] 
public string Name { get; set; } 

и User имеет - среди его свойств - в

[Required] 
public virtual Client Client { get; set; } 

Когда дело доходит до создания User с, User s создаются под конкретный Client s (очевидно)

So: in my User создайте страницу, я бросаю Client Идентификатор в сумку, чтобы я мог отправить ее с помощью User на мой создающий контроллер.

Первый вопрос, который я попал, что Modelstate.IsValid является false - это потому, что модель ClientUser создает не имеет Name, как это требуется. Быстрое исправление: также введите имя и верните его.

Это проходит проверку, и я могу извлечь Client правильно в коде и назначить его на мой User и сохранить новый User болтовня ...

Я уверен, что это не странно, один- выкл. Должен быть «правильный» способ сделать это, а не мошенничество, которое я сейчас делаю.

1) Как я могу «надлежащим образом» предоставить/сохранить Client, что я хочу назначить новый User?

2) Если вышеизложенное невозможно, что это лучший способ сделать это? В настоящее время я храню Client.Id в поле User.Client.Id и не использует [Bind(Exclude="Client")], что полностью удаляет Client с привязки User, я не уверен, как передать данные Client и проверить все.

спасибо.

ответ

0

Это не было бы проблемой, если бы вы использовали View Models вместо того, чтобы передавать свои сущности непосредственно в представление.

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

+0

А, я вижу. Я ожидал другого стиля работы, я не понимал, что мне нужен промежуточный шаг. Спасибо. – Krenom

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