2013-10-05 70 views
0

我希望能夠將模型傳遞給控制器​​方法。但是,此表單上有多個按鈕。似乎沒有辦法讓控制器知道哪個按鈕被點擊,除非你還傳遞了FormCollection值。傳遞哪個按鈕被點擊到控制器

在這種特殊情況下(表單上有多個提交按鈕),爲了傳遞這些值,Html.Beginform和Ajax.BeginForm對象的語法是什麼。

我知道控制器名稱,操作方法,模型和formcollection會在BeginForm上,但我不知道語法。

而不是formcollection值,我想我可以有一個hiddenfield值,表示哪個按鈕被點擊---正確?

無論如何,如果有人可以提供方法的語法,我將不勝感激。

回答

1

你想要做的可能是按鈕按下的隱藏字段。

使用jQuery(非必需)

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

現在,當你的表單提交的ButtonPressed屬性將包含「blueButton」如果藍鈕是它看起來像這樣

@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> 
} 

然後如果按下紅色按鈕,則按下「redButton」。我不確定你的模型是什麼樣的,所以我顯然只是一個例子,你必須改變以適應你的需求,但希望你能開始。

+0

我看到了...我將變量id更改爲buttonPressed,然後將該值設置爲ViewModel中的ButtonPressed屬性。非常感謝!我很感激... – sagesky36

相關問題