2009-06-07 10 views
24

次のコードを使用して作成したASP.Net MVCビューの1つにフォームがあります。ASP.Net MVC、javascriptを使用してフォームを送信

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

このコードを使用すると、フォームの名前を設定することができます。私は今フォームを送信するためのjavascript関数を書こうとしていますが、これはフォーム名を知らなくても可能ですか?

ありがとう

答えて

53

あなたはフォームを送信するためにjqueryのを使用することができます。

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

(最後の部分はhtmlAttributesパラメータのためである)

ちょうどこの操作を行います。

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

をし、 mvcに付属するjquery-1.2.6.js(またはより高いバージョンを使用する)を含めることを忘れないでください。あなたはそのページの一形態のみを持っている場合は

+0

私はMVCがこのようなことをいかに簡単にするのが大好きです。 –

+0

ブラケットが外れているか、2009年以降に少し変わったことがありますか?これは、Razor構文を使用して私のために働いたものです:** @ using(Html.BeginForm(null、null、FormMethod.Post、new {id = "form"}))** [編集:ちょうどajbeavenがこれを指摘別の答え] –

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

この簡単な解決策は、IEとFirefoxでのポストバック

​​

ワークスせずにAjaxのフォームを送信します。

9

フォームに名前を付けずにjQueryのを使用したい、とあなただけのページ上の一つの形態を持つことになります場合は、あなたは自分のページにこのようなリンクを追加することができます。

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

そして、このjQueryのを追加フォームに名前を付ける必要はありません(ちなみに、私はちょうど私のサイト上でそれをやった)ので、これはそれを行う方法です

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

- :どのごとフォームを送信するためのリンクを配線しますあなたは1つしか持っていなければなりません。それを言って、複数のフォームを提出したいかもしれません。

+0

スリックな解決策。この答えは大好きです。 +1 – dblood

+0

'.submit()'は、 'POST'コントローラメソッドによって返されたビューにリダイレクトします。リダイレクトせずに提出することは可能ですか? – Yoda

+0

あなたは異なるデータで同じビューを返すようにコントローラを得ることができ、ユーザーに何らかの応答を表示することができます。ページをまったく読み込まないようにするには、フォームをまとめてノックアウトビューモデルをページにバインドし、jQuery ajax呼び出しを使用してコントローラにポストすることができます。古典的な意味でフォームを投稿せずにコントローラに送信することができます。 –

関連する問題