我希望能够将模型传递给控制器方法。但是,此表单上有多个按钮。除非您还传递FormCollection值,否则似乎没有办法让控制器知道单击了哪个按钮。
在这种特殊情况下(在表单上有多个提交按钮),为了传递这些值,Html.Beginform和Ajax.BeginForm对象的语法是什么。
我知道控制器名称,操作方法,模型和formcollection将在BeginForm上,但我不知道语法。
而不是formcollection值,我想我可以有一个隐藏字段值表示点击了哪个按钮---正确吗?
无论如何,如果有人可以提供方法的语法,我将不胜感激。
答案 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'。我不确定你的模特是什么样的,所以我这显然只是一个例子,你必须根据自己的需要进行改动,但希望能让你开始。