将表单数据传递给.NET中的多个操作[重复]
Posted
技术标签:
【中文标题】将表单数据传递给.NET中的多个操作[重复]【英文标题】:Passing form data to multiple actions in .NET [duplicate] 【发布时间】:2017-07-15 08:59:58 【问题描述】:我在 Razor 中完成了一个表格。用户可以选择两种操作来处理他们填写到该表单的数据,
SaveCurrentProgress(User user)
...允许用户保存表单的当前状态并稍后返回。或:
SubmitFinalVersion(User user)
这会保存表单数据,然后将其呈现为只读。
我知道如何使用 html.BeginForm() 将对象传递给单个动作/控制器,但我如何对其进行编码以便用户可以将对象传递给两个动作之一?
【问题讨论】:
我认为这个问题有你要找的答案:How do you handle multiple submit buttons in ASP.NET MVC Framework? 只需在数据中添加一些内容,这些内容将被传递以确定流程......所以它总是会命中 action1 但它可能会根据数据中的值传递给 action1 中的 action2。 【参考方案1】:你不能真的。您可能会制造一些 JS 解决方案,根据单击的按钮切换操作,但就基本形式而言,没有办法有条件地更改操作。
但是,您可以为提交按钮命名,然后在单个操作中进行分支。例如:
<button type="submit" name="SaveProgress">Save Current Progress</button>
<button type="submit" name="SaveFinal">Save Final Version</button>
然后,在你的 one 动作中:
if (Request["SaveProgress"] != null)
// save progress
if (Request["SaveFinal"] != null)
// save final
由于只有被点击的按钮才会进入帖子数据,您可以使用按钮名称的存在来确定用户点击了哪个。
最后一个选择是根本不用担心保存不完整的数据服务器端。您可以使用localStorage
来保存用户将输入的数据添加到表单中。这意味着您甚至不需要明确的按钮。然而,这种方法的一个缺点是它必须绑定到用户当前正在编辑的浏览器和机器上(因为它是客户端)。如果他们移动到另一台计算机,他们将无法继续编辑。
【讨论】:
以上是关于将表单数据传递给.NET中的多个操作[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将表单 FormSeetController 中的数据传递给 ViewController?
如何将数据传递给BottomSheetDialogFragment [重复]