0

beginform で入力を自動投稿しようとしていますが、その値がモデルまたはコントローラーに到達しません。それらは null のままです (ブレークポイントはヒットしません)。何が原因でしょうか?

 @model project.Models.data

ジャバスクリプト

   function send()
        {
             $.ajax({
                        type: 'POST',
                        url: this.action,
                        data: {'data1': $('#data1').val(), 
                        'data2': $('#data2').val() },
                        success: function (done) {
                $('#box').html(done.output);
            });
        }

@using (Html.BeginForm())
{
<input id="data1" value="0" name="data1" onclick="send();" >
<input id="data2" value="0" name="data2" onclick="send();" >

}

モデル

namespace projects.Models
{
  public class data
    {
  public int data1{ get; set; }
  public int data2 { get; set; }
    }

}
4

2 に答える 2

2

フォームのデフォルト イベントをキャンセルしていないようです。フォームの .submit イベントにサブスクライブし、マークアップと JavaScript の混合を停止することをお勧めします。

@using (Html.BeginForm())
{
    <input id="data1" value="0" name="data1" />
    <input id="data2" value="0" name="data2" />
}

次に、別の JavaScript ファイルで、次の形式の .submit イベントにサブスクライブできます。

$(function() {
    $('form').submit(function() {
        $.ajax({
            type: this.method,
            url: this.action,
            data: {
                data1: $('#data1').val(), 
                data2: $('#data2').val() 
            },
            success: function (done) {
                $('#box').html(done.output);
            }
        });

        // It is very important to return false in order to prevent the default action
        return false;
    });
});
于 2012-06-26T21:01:00.587 に答える
1

手始めに、onclick属性を使用しないことをお勧めします。jQueryのclickまたはを使用するon方がはるかに優れています。

第二に、Html.BeginForm()はあなたがそれを使用している方法では機能しません。コントローラメソッドをヒットする場合は、ヒットしようとしているコントローラメソッドの値を含む送信ボタンが必要です。

jQueryを使用して(つまりAJAXを使用して)非同期でメソッドをヒットしようとしている場合は、次の投稿を参照することをお勧めします。

jqueryを使用してMVCコントローラーにデータを送信する

Html.BeginForm()AJAXを使用している場合、サーバーにPOSTするために、は必要ありません。ただし、POSTして別のアクションにリダイレクトする場合は、を使用しHtml.BeginForm()ます。

ここで、AJAXを使用せずにサーバーにPOSTしようとしている場合は、の送信ボタンが必要ですHtml.BeginForm()。以下のこの記事では、登録フォームがどのように機能し、状況に適用できるかについて詳しく説明します。

MVC3コントローラーはどのようにHTTPPOSTパラメーターを取得しますか?

于 2012-06-26T20:47:46.647 に答える