2012-01-06 19 views
0

私はASP.NET MVCプロジェクトで作業します。 コントローラのアクションに2つのパラメータを渡す必要があります。最初のものは直列化可能なオブジェクトであり、2番目のものは整数です。 初めて、私は1つのパラメータ、つまり直列化可能なオブジェクトのみを渡そうとしました。 問題はありませんが、2番目のパラメータを追加すると、シリアル化可能オブジェクトは(NULL値)が配信されませんが、整数パラメータは正常に配信されます。ASP.NET MVCでajaxを使用して複数のオブジェクトをコントローラに渡す

これがあるように私の行動を見て:

[HttpPost] 
    public bool MyAction(MySerializableObject myData, int intParameter) 
    {..} 

、これは私がパラメータを渡すしようとする方法である:

$('#submit-button').click(function() {   
    var formData = $("#MyForm").serialize(); 
    var posturl = '/MyController/MyAction'; 
    var retUrl = '/MyCOntroller/SomeWhere'; 
    ... 
    $.post(posturl, { myData: formData, intParameter: '5005' }, function (result) { 
     if (result == 'True') { 
      location.href = retUrl; 
     } 
     else { 
      alert('failed'); 
     } 
    }); 
}); 

誰もがそれについて説明することができますか?それがどうやって起こり、問題を解決するのか?

ありがとうございました。

答えて

0

これはロングショットのビットかもしれませんが、周りのパラメータの順序を入れ替えようとしたことがありますか?(IE public bool MyAction(int intParameter、MySerializableObject myData)IMが尋ねる理由は、クライアントサイドがisnt

実際にサーバーに投稿されているものを見てみるのが最善の策ではない場合は、WebkitでFirebugsネットタブなどを開いて、実際にサーバーに戻ってきてください。

0

.serializeの代わりにfollowing plugin (serializeObject)を使用できます。

var formData = $('#MyForm').serializeObject(); 
// add some data to the request that was not present in the form 
formData['intParameter'] = 5005; 

var posturl = '/MyController/MyAction'; 
var retUrl = '/MyCOntroller/SomeWhere'; 
... 
$.post(posturl, formData, function (result) { 
    if (result == 'True') { 
     location.href = retUrl; 
    } 
    else { 
     alert('failed'); 
    } 
}); 
関連する問題