2016-05-12 9 views
0

3つのパラメータとシリアル化されたフォームでコントローラのアクションメソッドを呼び出すにはどうすればよいですか?シリアル化されたフォームを含む複数のパラメータでコントローラを呼び出す

ここに私が持っているが、 'SearchCriteria sc'パラメータがnullです。ここで

public JsonResult CreateDynamicCollection(int[] arrIds, string collectionName, int parentCollectionId, SearchCriteria sc) 
{ 
    // sc is null 
} 

public class SearchCriteria 
{ 

    public string City { get; set; } 

    public string PostalCode { get; set; } 

    // other fields here left out 
} 

var model = {}; 
 
model.arrIds = arrIds; 
 
model.parentCollectionId = parentId; 
 
model.collectionName = $createCollectionName.val(); 
 
var form = $('#formAdvSearch')[0]; 
 
model.form = $(form).serialize(); 
 

 
$.post(controller, model, function(response) { 
 
    if (response.error == false) { 
 
     //do some stuff 
 
    } 
 
    }) 
 
    .fail(function() { 
 

 
    }) 
 
    .always(function() { 
 

 
    });

+0

に入れました。シリアル化されたプロパティを持つモデルを送信することはできません。 –

+0

それは私が他のパラメータなしで送るものならば動作します!! – user1186050

+0

'.serialize()'を使う場合は、 '$ .param()'メソッドを使って他の値を追加する必要があります。例については、[この回答](http://stackoverflow.com/questions/32353093/mvc-jquery-ajax-post-returns-null/32353268#32353268)を参照してください。 –

答えて

0

は、私は、より複雑なserialzedデータ構造に渡され、私が何をしたか

です。

var form = $('#formAdvSearch')[0]; 
 
var serializedForm = $(form).serializeArray(); 
 
serializedForm.push({ 
 
    name: 'arrIds', 
 
    value: arrIds 
 
}); 
 
serializedForm.push({ 
 
    name: 'parentCollectionId', 
 
    value: parentId 
 
}); 
 
serializedForm.push({ 
 
    name: 'collectionName', 
 
    value: $createCollectionName.val() 
 
}); 
 
model = serializedForm;

それから私は、モデルを受け入れる私の新しいオブジェクトを作った古いオブジェクトを継承し、新しいアイテムを使用すると、動作しません何をやっている新しいOBJ

関連する問題