传递哪个按钮被点击到控制器

时间:2013-10-05 21:40:15

标签: jquery asp.net-mvc-4 controller

我希望能够将模型传递给控制器​​方法。但是,此表单上有多个按钮。除非您还传递FormCollection值,否则似乎没有办法让控制器知道单击了哪个按钮。

在这种特殊情况下(在表单上有多个提交按钮),为了传递这些值,Html.Beginform和Ajax.BeginForm对象的语法是什么。

我知道控制器名称,操作方法,模型和formcollection将在BeginForm上,但我不知道语法。

而不是formcollection值,我想我可以有一个隐藏字段值表示点击了哪个按钮---正确吗?

无论如何,如果有人可以提供方法的语法,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您想要做的可能是按下按钮的隐藏字段。

它看起来像这样

@using (Html.BeginForm("ActionName", "Controller", FormMethod.Post, new { id = "myForm" }))
{
     @Html.HiddenFor(s => s.ButtonPressed, new { @id = "hidden_button_pressed_id"})
     <button id='blueButton'>Blue Button</button>
     <button id='redButton'>Red Button</button>
     <button type='submit'>Submit Form</button>
}

然后使用jquery(不需要)

$(function() {
    $('#blueButton').click(function() {
        $('#hidden_button_pressed_id').val('blueButton');
    }
    $('#redButton').click(function() {
        $('#hidden_button_pressed_id').val('redButton');
    }
}

现在提交表单时,如果按下蓝色按钮,ButtonPressed属性将包含'blueButton',如果按下红色按钮,则为'redButton'。我不确定你的模特是什么样的,所以我这显然只是一个例子,你必须根据自己的需要进行改动,但希望能让你开始。