2012-04-06 27 views
5

私はASP.NET MVCコントローラにASP.NET MVCコントローラにJavascriptの配列を渡す

var postParams = { 

     attributes : [ 
         { 
          name : '', 
          description: '', 
          attributeType : '', 
          value : '' 
         } 
         ] 
    }; 

postParams.attributes[0] = new Object(); 
postParams.attributes[0].name = "test"; 
postParams.attributes[0].description = "test"; 
postParams.attributes[0].attributeType = "test"; 
postParams.attributes[0].value = "test"; 

に合格しようとしています次のJavaScriptクラスは、ここで私はコントローラのメソッドを呼び出す方法ですしている:

var actionURL = "@Url.Action("Save", "Catalog")"; 
    $.ajax({ 
        type: "POST", 
        url: actionURL, 
        data: postParams ...... 

public class AttributeViewModel 
{ 
    public string name { get; set; } 
    public string description { get; set; } 
    public string attributeType { get; set; } 
    public string value { get; set; } 
} 

マイコントローラーの保存方法はデで次のように私はViewModelにを宣言したコントローラ側で

public JsonResult Save(AttributeViewModel[] attributes) 

属性の値は常にnullです。

アイデア?これをデバッグする方法もわかりません。

答えて

6

あなたは、クライアントで

[JsonFilter(Param = "attributes", JsonDataType = typeof(AttributeViewModel[]))] 
    public JsonResult Save(AttributeViewModel[] attributes) 

あなたの問題を解決するためにjson.netライブラリを試すことができます:あなたはAJAX呼び出しにtraditional : trueを追加する必要があるよう

$.ajax({ 
     type: 'POST', 
     url: url, 
     async: true, 
     data: JSON.stringify(attributes), //!!! Here must be the same name as in controller method 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 

     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

     } 
    }); 
+0

お礼ありがとうございます。 Json.netへの参照を追加し、フィルタを追加しましたが、nullは引き続き属性に渡されます。 – Lance

+0

@Lance回答がクライアントコード –

+0

に更新されましたJSON.stringify()が追加されましたSanjaに感謝しました! – Lance

1

は思えます。見てくださいherehere

$.ajax({ 
       traditional: true, 
       type: "POST", 
       url: actionURL, 
       data: postParams 
+0

伝統的に追加されました:真ですが、問題を解決しませんでした。私はこれを長年にわたって行ってきましたので、私はコンマで区切られた配列をコントローラに渡します。 – Lance

関連する問題