2016-07-22 17 views
0

が機能していません。しかし、私は配列として値を渡そうとすると、私はコントローラでnullとしてプロパティ値を取得しています。MVC 2 - コントローラへのJavaScriptの配列は、それが正常に動作しているMVCコントローラへの単一のオブジェクトを渡そうとしますが、私は3.5</p> <p>をMVC2で作業および.NET Frameworkい

私はこれを行うために以下のコードを使用しています。

はJavaScript

var tdmsConfiguredLayersList = [{Id:1,Name:'Test1'},{Id:2,Name:'Test2'}]; 
    $.ajax({ 
      type: "POST", 
      //contentType: 'application/json; charset=utf-8', 
      //JSON.stringify({ layers: tdmsConfiguredLayersList }), 
      data:{layers:tdmsConfiguredLayersList}, 
      url: rootUrl + "Map/CatalogueDrawing", 
      dataType: "json", 
      success: function (result) { 
       debugger; 
      }, 
      error: function (errResult) { 
       debugger; 
      } 

    }); 

コントローラコード

[HttpPost] 
public void CatalogueDrawing(List<LayerViewModel> layers) 
{ 

} 

Result that is returned

LayerViewModelクラス

public class LayerViewModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 
+1

から、それをデシリアライズしました。 'contentType: 'application/jsonを追加する必要があります。 JSON.stringify({layers:tdmsConfiguredLayersList}) ' –

+0

私もこれを試しました。しかし、それは動作していません –

+0

それは動作します:)(そして 'MapController'を仮定し、' url: '@ Url.Action( "CatalogueDrawing"、 "Map")'、 ' - ハードコードurlを使用します) –

答えて

0

.NET 3.5にコントローラにあなたのリストを渡すための別の方法は、JSON文字列として渡すと、あなたのcommenedコードはほとんどなかったコントローラ

using System.Web.Script.Serialization; 



var tdmsConfiguredLayersList = [{Id:1,Name:'Test1'},{Id:2,Name:'Test2'}]; 
    tdmsConfiguredLayersList = JSON.stringify(tdmsConfiguredLayersList); 
    $.ajax({ 
      type: "POST", 
      data: { jsonString: tdmsConfiguredLayersList }, 
      url: rootUrl + "Map/CatalogueDrawing", 
      dataType: "json", 
      success: function (result) { 
       debugger; 
      }, 
      error: function (errResult) { 
       debugger; 
      } 

    }); 


public void CatalogueDrawing(string jsonString) 
{ 
     var jss = new JavaScriptSerializer(); 
     List<LayerViewModel> layers = jss.Deserialize<List<LayerViewModel>>(jsonString); 
} 
関連する問題