首页 > 解决方案 > 我有一个复杂的视图模型,它构建了复杂的命名 html 元素。如何构建匹配的帖子模型?

问题描述

我有很多数据需要从控制器传递到视图,并且我正在尝试尽可能使用强类型视图模型。

举个例子,您有一个包含大量人员的数据库 - 我们想要编辑一个人,同时还显示一个具有相同姓氏的每个人的列表。

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"/>

这反过来产生:

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

但是,我尝试将newperson_Firstname其他组合添加到我的模型中,但我只是看不到数据。

任何人都可以请帮助并让我知道我做错了什么 - 或者,我应该调整视图模型以更适合目的吗?

...最后,是否有任何等效的var_dump($_REQUEST); ? 目前,我正在添加断点并尝试在 Locals 中打开不同的项目,但是,这是反复试验并且需要很长时间......我只是想找到表单的位置!

标签: asp.net-core-mvcviewmodelasp.net-mvc-viewmodel

解决方案


您不需要在 Request 对象中进行挖掘。如果您将 ViewModel 的实例传递给您的 post 操作,模型绑定将负责Person自动填充属性:

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

推荐阅读