mvc.net как редактировать вложенные классы viewmodel - PullRequest
1 голос
/ 15 сентября 2010

У меня есть следующий вложенный класс viewmodel ...

public class CustomerModel
{
  public string name;
  public Address mailingAddress;
  public Address billingAddress;
}

public class Address
{
  public string line1;
  public string city;
  public string country;
}

Я надеялся, что есть какой-то автоматизированный способ создания страницы редактирования, но все, что я пробовал и читал, указывает на то, что фреймворки генерация кода обрабатывает только свойства верхнего уровня в вашей модели представления.Свойство 'name' является единственным, сгенерированным в представлении и в действии, это только свойство 'name', которое заполняется адресами, оставленными как нулевые.

[HttpPost]
public ActionResult Edit(CustomerModel model)

однако, если явручную добавьте поля ввода для адреса (через частичные представления) и переключитесь на сигнатуру FormCollection для действия, я получу соответствующие значения адреса, введенные на экране.

есть ли простое решение для этого, кроме созданиямоя собственная функция для преобразования из FormCollection в CustomerModel?

1 Ответ

2 голосов
/ 15 сентября 2010

Не могли бы вы использовать шаблон редактора здесь? По сути, вы создаете строго типизированное частичное представление (Address - это тип в вашем случае), сохраняете его в определенной папке (/ Views / Shared / EditorTemplates) и всякий раз, когда для элемента этого типа данных отображается редактор, частичное представление вместо этого автоматически отображается. Таким образом, вызов Html.EditorFor(model => model.mailingAddress) отображает частичное представление.

Я думаю, что первое, что я прочитал об этом, было, когда я искал некоторую проверку DateTime. Проверьте эту ссылку, и, возможно, ваше частичное представление будет иметь Html.EditorFor(model => model.line1) и Html.EditorFor(model => model.city) *

Это не делает все суперавтоматическим, но помогает в будущем редактировании типов данных, таких как Address.

...