У меня есть сложная модель представления, которая построила сложные названные элементы HTML. Как построить подходящую модель поста? - PullRequest
1 голос
/ 19 июня 2019

У меня много данных, которые необходимо передать из контроллера в представление, и я пытаюсь использовать строго типизированные модели представления, где это возможно.

Возьмите пример, где у вас есть база данных с множествомлюди - Мы хотим отредактировать человека, одновременно представляя список всех с одинаковой фамилией.

public class person
{ 
  public string ID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

public class testviewmodel
{
 public List<person> people { get; set; }
 public person newperson { get; set; }
}

Я не могу использовать testviewmodel в качестве модели для поста, потому что вформа / данные.Мне удалось построить модель, которая содержит почти все данные формы, кроме данных из модели представления.

Я генерирую некоторые элементы в форме с помощью:

<input asp-for="newperson.Firstname" class="form-control"/>

Это вreturn генерирует:

<input class="form-control" disabled type="text" id="newperson_Firstname" name="newperson_Firstname" value="xxxx" />

Однако я попытался добавить newperson_Firstname к моей модели вместе с несколькими другими комбинациями, и я просто не могу увидеть данные.

МожетКто-нибудь, пожалуйста, помогите и дайте мне знать, что я делаю неправильно - или, я должен просто настроить модель представления, чтобы она была более подходящей для цели?

... Наконец, есть ли эквивалент var_dump(_REQUEST $); ?В данный момент я добавляю точки останова и пытаюсь открыть разные элементы в Locals, но это пробная версия и ошибка, и я берусь за возрасты ... Я просто пытаюсь найти, где находится форма!

1 Ответ

1 голос
/ 19 июня 2019

Вам не нужно копаться в объекте Request. Если вы передадите экземпляр вашей ViewModel в действие post, привязка модели позаботится о автоматическом заполнении свойства Person:

[HttpPost]
public IActionResult Edit(TestviewModel model)
{
    var person = model.Person; // add a breakpoint here, should represent the posted values
}
...