我有一个复杂的视图模型,它构建了名为 html 的复杂元素。如何构建匹配的 post 模型?
I have a complex View Model that has built complex named html elements. How do I build a matching post model?
我有很多数据需要从控制器传递到视图,我正在尝试尽可能使用强类型视图模型。
举一个例子,你有一个包含大量人员的数据库 - 我们想要编辑一个人,同时还提供一个包含相同姓氏的所有人的列表。
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 用作 post 的模型,因为 form/data 中还有很多事情要做。我已经设法构建了一个包含几乎所有表单数据的模型,除了来自视图模型的数据。
我通过以下方式生成表单中的一些项目:
<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 中打开不同的项目,但是,这是反复试验并且需要很长时间...我只是想找到表格的位置!
您不需要深入研究 Request 对象。如果您将 ViewModel 的实例传递给 post 操作,模型绑定将负责自动填充 Person
属性:
[HttpPost]
public IActionResult Edit(TestviewModel model)
{
var person = model.Person; // add a breakpoint here, should represent the posted values
}
我有很多数据需要从控制器传递到视图,我正在尝试尽可能使用强类型视图模型。
举一个例子,你有一个包含大量人员的数据库 - 我们想要编辑一个人,同时还提供一个包含相同姓氏的所有人的列表。
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 用作 post 的模型,因为 form/data 中还有很多事情要做。我已经设法构建了一个包含几乎所有表单数据的模型,除了来自视图模型的数据。
我通过以下方式生成表单中的一些项目:
<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 中打开不同的项目,但是,这是反复试验并且需要很长时间...我只是想找到表格的位置!
您不需要深入研究 Request 对象。如果您将 ViewModel 的实例传递给 post 操作,模型绑定将负责自动填充 Person
属性:
[HttpPost]
public IActionResult Edit(TestviewModel model)
{
var person = model.Person; // add a breakpoint here, should represent the posted values
}