如何让同一个Form的两个按钮传递相同的模型

时间:2013-12-18 17:25:58

标签: jquery asp.net-mvc-4

我正在处理ASP.NET MVC4申请。我想要做的是允许用户向表中添加行,然后用数据填充它们,如果需要,添加另一行等等,直到他想要保存他的工作。

使用标准@Html.BeginForm和操作方法AddRow(MyViewModel model)我设法做到了这一点。但是在同样的形式中,我想添加另一个按钮,让我们说:

 <input type="submit" value="Add row" />
 <input type="submit" id="save-form" value="Save table" />

点击Save table后,我想将模型传递给SaveCustomTable(MyViewModel mode)之类的另一个操作,我将保存数据等等。

我看过互联网有关可能的解决方案并找到了这个:

$(function () {
    $('#save-form').click(function () {
        $(form).attr('action', 'Url.Action( "action1" )')
               .submit();
        return false; // prevent default submission
    });
});

然而,我对jQuery的了解不足使我无法完全运行它。首先 - 这是好的,它一般会起作用吗?如果是这样,我应该将$(form).attr(...)的参数作为参数传递给控制器​​Foo中的行为Bar?它会将模型作为另一个没有附加jQuery的按钮提交吗?

2 个答案:

答案 0 :(得分:1)

我建议您为这两个按钮添加事件处理程序,并在这些处理程序中设置表单操作。我认为会更清楚:

$(function () {
    $('#addRowBtn').click(function () {
        $(form).attr('action', $(this).attr('rel'));
    });
    $('#saveTableBtn').click(function () {
        $(form).attr('action', $(this).attr('rel'));
    });
});

在您查看中,添加其他属性并在此处保存所需操作:

<input type="submit" id="addRowBtn" rel="@Url.Action("action1")" value="Add row" re />
<input type="submit" id="saveTableBtn" rel="@Url.Action("action2")" value="Save table" />

答案 1 :(得分:0)

查看此链接,这是我用来处理MVC中的多个提交按钮的内容,它仍然适用于MVC4和MVC5项目。

Multiple submit buttons with ASP.NET MVC

然而,似乎你的保存按钮是提交,而添加行只是一个简单的按钮,不是吗?