【问题标题】:Multiple forms, single view, ViewModel for MVC Core 2.0MVC Core 2.0 的多种形式、单一视图、ViewModel
【发布时间】:2019-01-19 07:56:31
【问题描述】:

对 MVC Core 来说相当新,并且有一个视图,其中包含两个表单和一个表单标签中的一个按钮。我有一个 ViewModel,这样我就可以将多个对象传入和传出 View。

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

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

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

如果您想要一些来源,我可以提交,但我认为以上内容希望能很好地解释我的问题。

TIA。

【问题讨论】:

  • 为什么不使用单一表格?
  • 一个表格可能就是答案。我使用单独的表单,因为页面在布局方面非常复杂,我真的不想用单个
    包装所有内容。
  • 由于这只是一个评论,我不能接受它作为答案(没有复选标记)
  • 您可以接受 Jürgen Rörh 的答案,它非常好且清晰。

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


【解决方案1】:

尽管没有明确解决问题(如果确实可以解决的话),但还是接受 agua 的回答。

【讨论】:

    【解决方案2】:

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

    您可以通过在每个表单中为视图模型的本地未使用属性生成隐藏输入字段来解决此问题。这样,两个表单都包含所有数据,并且生成的帖子将是“完整的”。但根据我的经验,这很难维持。所以我建议你应该考虑使用单独的表单和单独的 post 端点。

    【讨论】:

    • 谢谢你,但会接受 agua 的回答,因为它确实解决了我的问题。
    • 没关系。也欢迎点赞。由于您不能接受评论(来自 agua),也许您自己发布一个答案以“关闭”问题并避免其他人打扰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多