2013-02-06 96 views
2

在我的剃鬚刀視圖中,我使用的是Html.BeginForm。其中我有兩個元素,當我設置clic時,應該提交表單,但我需要添加一個額外的字符串參數。如何在我的JQUERY提交中添加其他數據?

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" })) 
{ 
    ... 
} 

    [HttpPost] 
    public ActionResult Index(string parameter, QuizCompletedViewModel q) //FormCollection f) 
    {    
     ... 
     if (button.Equals("d")) 
     { 
      ... 
      return RedirectToAction("ShowResults", new { testId = Quiz.QuizId, answeredTest = answeredId }); 
     } 
     else 
     { 
      ... 
      return RedirectToAction("Index", "Dashboard"); 
     } 
    } 

所以,在我的jQuery功能我利用$("#element").submit()和參數parameter總是爲空(這是正常的)。如何使用JQUERY爲parameter添加其他數據?

注意:我沒有使用AJAX。

+0

什麼額外的數據?來自哪裏?什麼是'#元素' - 表單或其他元素? – tvanfosson

+0

你是如何通過模型? –

+0

@BhushanFrake使用與我的剃鬚刀視圖相同的整個模型 –

回答

6

在您的形式透過嘗試這樣的:

 $("form").submit(function(){ 
      $.ajax({  
       type: 'POST', 
       url: "/Quiz/Index", 
       dataType: "json", 
       data: $("form").serialize() + '&parameter=param1' , 
       success: function() { 
        alert("Successful"); 
       } 
       error: function(){ 
        alert('error'); 
       } 

      }); 
     }); 

希望它能幫助。


編輯

嘗試像這樣在你的jQuery函數:

$('form').append('&param=a'); 
+1

但我沒有使用ajax:/ –

+0

請檢查我的帖子編輯 –

+0

我錯過了什麼嗎?它仍然在'parameter'值中傳遞NULL值:$(「#form」)。append('button = a')。submit(); –

6

您可以在窗體中添加一個隱藏的輸入,其中包含您需要的名稱和值。該值將與所有其他表單項一起提交。

<input type="hidden" name="someName" value="someValue" /> 

編輯發表評論:

如果你給你的每一個提交按鈕作爲一個屬性,你可以抓住它,單擊處理程序,然後隱藏字段附加與表單中的數值的數值。例如:

$(function(){ 
    $('#form input[type=submit]').click(function(e) { 
     var val = this.getAttribute("data-param"); 
     $(this).closest('form').append('<input type="hidden" name="param" value="' + val + '" />"); 
    }); 
}); 

未經測試,只是一個預感。希望表單提交事件在按鈕點擊事件之前不會被觸發。您還需要處理輸入事件和按鍵等。

爲什麼你不想使用ajax?

+0

好吧,想象我的剃鬚刀視圖中有兩個按鈕,其中一個應該發送「d」作爲'parameter',另一個發送「a」作爲'參數' –

+0

謝謝你,你的解決方案做到了! :) –

4

根據您的意見,爲你做最簡單的事情是讓你的submit類型的按鈕,給他們是name。如果他們有一個name,被點擊將與表單後自動發送按鈕的value,請參閱:sending form's submit button's value?

例子:

當點擊a按鈕,parameter將被張貼與價值a 。同樣適用於bc。如果單擊了none按鈕,則不會發送任何值,並且parameter將會是null(出於演示目的顯示,您可能不需要此值)。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" })) 
{ 
    ... 

    <input type="submit" value="a" name="parameter" /> 
    <input type="submit" value="b" name="parameter" /> 
    <input type="submit" value="c" name="parameter" /> 
    <input type="submit" value="none" /> 
} 
相關問題