多种形式,单一视图,适用于MVC Core 2.0的ViewModel

时间:2018-08-12 10:17:03

标签: c# asp.net razor model-view-controller asp.net-core

这是MVC Core的新功能,它具有一个视图,其中包含两个表单和一个表单标签中的一个按钮。我有一个ViewModel,以便可以将多个对象传入和传出View。

我看到的问题是该按钮仅POST退回它所在窗体的内容,而不是回发同一视图上其他窗体中包含的数据,即使它正确填充了ViewModel;我已经通过在每个表单中放置一个按钮并根据您单击的按钮将表单的数据传递回Controller进行了测试。

作为一个新手,我假设一旦ViewModel中的属性被填充,则提交按钮的POST回退将捕获所有输入的数据-并非如此。

我看到的示例似乎与在同一视图中具有不同功能的要求(例如,登录/注册)有关,但是我希望将所有收集的数据传递回一个POST中,这可能吗? / p>

如果您需要一些资料,我可以提交,但我认为以上内容可以很好地说明我的问题。

TIA。

2 个答案:

答案 0 :(得分:2)

这不是与ASP相关的问题,因为它在您的服务器上运行并生成传递给浏览器的html代码。是浏览器回发数据……因此,提交表单时,浏览器会收集包含的输入文件并根据其数据创建发布请求。实际上,浏览器对视图模型一无所知。

您可以通过为视图模型的本地未使用属性的每种表单生成隐藏的输入字段来解决此问题。这样,两种形式都包含所有数据,并且结果将是“完整的”。但是根据我的经验,这很难维持。因此,建议您考虑使用具有单独的发布端点的单独表单。

答案 1 :(得分:0)

使用agua的答案,尽管它不能明确解决问题(如果确实可以解决)。