2009-06-07 69 views
24

提交表單我有一個窗體上的,我用下面的代碼ASP.Net MVC,使用JavaScript

<% using (Html.BeginForm(null, null, FormMethod.Post)) 

使用這個代碼,我無法控制我的創建MVC ASP.Net的景色之一,據我知道設置表單的名稱。我現在試圖寫一個JavaScript函數來提交表單,這可能不知道表單名稱?

感謝

回答

53

您可以使用jQuery提交表單:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm"})) { %> 

(最後一部分是htmlAttributes參數)

只是這樣做:

$("#myForm").submit(); 

和不要忘記包含mvc附帶的jquery-1.2.6.js(或使用更高版本)。

+0

我很喜歡MVC如何輕鬆做到這一點。 – 2010-09-21 00:39:36

+0

要麼你有一個支架不合適,或自2009年以來事情有所改變!這是使用Razor語法的工作原理:** @使用(Html.BeginForm(null,null,FormMethod.Post,new {id =「form」}))** [編輯:剛纔注意到ajbeaven指出了這一點另一個答案] – 2011-09-05 18:38:13

2

如果你有一個頁面上只有一種形式,你可以通過訪問形式:如果您需要設置的名稱

<a href="javascript:document.forms[0].submit()">submit form</a> 
1

document.forms[0]. 

所以,你可以添加一個鏈接表單,使用BeginForm方法的對象htmlAttributes參數。

<% using 
    (Html.BeginForm(null, null, FormMethod.Post, 
    new {name="MySuperForm"})) %> 

要通過javascript提交表單,請查看this post。可能有用。

1

這種簡單的解決方案提交Ajax表單沒有後回

​​

在IE和Firefox。

9

如果你想使用jQuery不點名的形式,你將只在頁面上的一個形式,你可以添加這樣一個鏈接到你的頁面:

<a href="#" class="submitForm">Submit</a> 

,然後添加這個jQuery這將電纜鋪設鏈接提交形式:

$(document).ready(function() { 
    $("a.submitForm").click(function() { 
     $("form").submit(); 
    }); 
}); 

因此,這是做這件事的方式,不需要你來命名形式(順便我只是做了我的網站上) - 前提是你只有一個。說,你可能想要提交多種形式..

+0

流暢的解決方案。喜歡這個答案。 +1 – dblood 2012-12-06 00:15:04

+0

'.submit()'會導致重定向到'POST'控制器方法返回的視圖。有沒有可能提交沒有重定向? – Yoda 2014-09-22 21:16:24

+0

您可以讓控制器返回具有不同數據的相同視圖,然後向用戶顯示某種響應。如果你不希望頁面重新加載,你可以完全拋棄該表單,並將Knockout視圖模型綁定到頁面上,然後使用jQuery ajax調用將數據發佈到控制器 - 這將允許您發佈傳遞給控制器​​,而不會以傳統意義發佈表單。 – 2014-09-30 07:52:36