将表单数据传递给.NET中的多个操作

时间:2017-02-24 13:42:01

标签: c# asp.net-mvc razor

我在剃刀中完成了一个表格。用户可以选择两个操作来处​​理他们填写到该表单的数据,

SaveCurrentProgress(User user)

...允许用户保存表单的当前状态,稍后再返回。或者:

SubmitFinalVersion(User user)

保存表单数据,然后将其呈现为只读。

我知道如何使用Html.BeginForm()将对象传递给单个动作/控制器,但是如何对其进行编码以便用户可以将对象传递给其中一个动作?

1 个答案:

答案 0 :(得分:1)

你无法 。您可以制作一些JS解决方案,根据点击的按钮切换操作,但就基本形式而言,无法有条件地更改操作。

但是,可以命名您的提交按钮,然后在单个操作中进行分支。例如:

<button type="submit" name="SaveProgress">Save Current Progress</button>
<button type="submit" name="SaveFinal">Save Final Version</button>

然后,在一个操作中:

if (Request["SaveProgress"] != null)
{
    // save progress
}
if (Request["SaveFinal"] != null)
{
    // save final
}

由于只有点击的按钮才会进入发布数据,因此您可以使用按钮的名称来确定用户点击的内容。

最后一个选择是不必担心保存不完整的数据服务器端。当用户将输入的数据添加到表单时,您可以使用localStorage保存输入的数据。这意味着你甚至不需要一个明确的按钮来达到目的。然而,这种方法的一个缺点是它必然绑定到用户当前正在编辑的浏览器和机器(因为它的客户端)。如果他们转移到另一台计算机,他们将无法恢复编辑。