0

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

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

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

而不是 formcollection 值,我想我可以有一个 hiddenfield 值表示单击了哪个按钮 --- 对吗?

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

4

1 回答 1

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”。我不确定您的模型是什么样的,所以我这显然只是一个示例,您必须根据自己的需要进行更改,但希望可以帮助您入门。

于 2013-10-06T02:14:57.223 回答