2010-09-21 75 views
2
// html 
<% using (Html.BeginForm("MyAction", "MyController", 
        new { id = ViewContext.RouteData.Values["id"] }, 
        FormMethod.Post, 
        new { enctype = "multipart/form-data", class="myForm" })) 
{ %> 
    <input type="file" name="blah" /> 
<% } %> 



// script 
$container.find('.myButton').click(function() { 
    $container.find('.myForm').submit(); 
}); 

在表單提交之前,我需要添加一些額外的參數(路由值),這些參數只能在提交時計算。使用Html.BeginForm和jQuery添加動態參數提交

我該怎麼做?

回答

5

你可以在提交前一個隱藏字段添加到窗體:

$container.find('.myButton').click(function() { 
    var form = $container.find('.myForm'); 
    form.append(
     $(document.createElement('input')) 
      .attr('type', 'hidden') 
      .attr('name', 'somename') 
      .attr('type', 'somecalculatedvalue') 
    ); 
    form.submit(); 
}); 
+1

我同意你的答案,但由於這是一個背後的腳本(推測可能與模型綁定),我將建議隱藏的輸入字段應該已經被刪除(即不是即時生成的) - 它應該只是改變其值。 – 2010-09-21 14:08:41

+0

@Kirk,是的,這是一個好主意。輸入可能已經在服務器端生成,只能在客戶端上設置它的值,除非這些隱藏字段的數量是動態的並由用戶添加。 – 2010-09-21 14:11:30

+0

我無法真正擁有靜態隱藏字段,因爲我在頁面上有無限數量的表單,並且每個提交都需要這些額外的信息,因爲它是用於錯誤恢復的。我可以在母版頁中有一個隱藏字段,但是再次出現這個問題,我不知道如何讓這個值與表單一起提交。 – fearofawhackplanet 2010-09-21 14:27:05

相關問題