2012-04-27 62 views
1

我有一個表格,將有以下格式:如何爲多行表單實現多個提交按鈕?

  1. 我第一行(文本)提交按鈕]
  2. 我第二行(單選)[提交按鈕]
  3. 我第三排(複選框)[提交按鈕]
  4. 我第四行(下拉)[提交按鈕]
  5. 我第五行(文本框)[提交按鈕]
  6. 我第六行(文本框)[提交按鈕]
  7. 我第七行(單選)[提交按鈕]

文本(例如:我是第四行)和控件的值會從數據庫加載。我希望提交按鈕僅將其控件的值(例如:第4行,下拉值== N/A)發送到服務器。並非所有控件的值。

現在我將不得不換行每個行與Html.BeginForm或可以包裝所有行與一個Html.BeginForm?什麼是處理這種事情的最好(或者更好的)方法。

注:我已搜索周圍SO並沒有看到這樣的討論的一個問題。

回答

1

聽起來像是你需要創建一個循環來建立你的表..和有條件地創建基於什麼,那就是你的密鑰對行決定將一個特定的元素類型(文本,單選,多選,等等。 。),每行都必須包裹在表單標籤中。由於您需要評估正確的元素,因此可以使用它來構建BeginForm以告知它將帖子發佈到某個操作的位置,可能是每個元素類型的不同操作,以便該操作僅接收您希望接收的數據

0

首先,你不能嵌套表格標籤(瀏覽器不支持它)。

上點擊的輸入[類型=提交]觸發其父窗體上回發事件。 ex。

<form action='/PostBackTo' onsubmit='DoSomething()'> 
<input type='submit /> 
</form> 

所以你必須包裝自己的表單中的每個控件,你想調回需要駐留在輸入或選擇以標籤的形式中的任何附加數據。

說你想回來後的ID與每一個提交,你就必須添加

<input type='hidden' value='@id' /> 

每個表單標籤內把它包括在回發。

,如果你做這種方式我建議,使用JavaScript攔截提交行動,並提交形式通過AJAX發佈數據(如果它像一個‘保存更改’按鈕)。

0

例如:1。我是第一排:

<input type="text" value="@textValue" id="txtFirstRow" /> 
<input type="button" onclick="post('txtFirstRow');" /> 

Javascript代碼:

function post(name) 
{ 
    var txt = document.getElementById(name).value; 
    $.getJSON("/Controller/Action", 
    { 
     text: txt 
    }, 
    function (data) { 
     //returned result 
    }); 
} 
1

我相信你可以做到這一點使用jQuery:所有的 首先爲每一行單獨形式。 嘗試使用下面的代碼.. 的Jquery:

function SubmitForm(btn) 
{ 
    var form = btn.serialize(); 
    $.post("your URL here",form,function() { 
     alert("Saved"); 
    }); 
} 

HTML:

<form id='form1' > 
... 
Other controls on your form 
... 
<input type="button" id="form1" onclick="SubmitForm(this)" /> 
</form> 
相關問題