2017-07-19 17 views
0

私はASP MVC 5を使用します。 サーバーからクライアントへのデータの送信を試みます。ここでアクションメソッドは起動されますが、渡されたパラメータの値はnullです

は私が送信されたデータである。

var layer = { 
       layeType:"Vector" 
       layerName:"aaaa" 
       mapId:5 
       } 

そしてここでは、Ajaxの方法です:アクションメソッドが起動された

public JsonResult SaveLayer(string layer) 
     {   
      return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); 
     } 

、しかし:ここ

function saveLayer(layer, callback, error) { 
    return $.ajax({ 
     url: '/Mobile/Layer/SaveLayer', 
     type: "GET", 
     async: false, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: { layer: layer }, 
     success: callback, 
     error: error 
    }); 

は、アクションメソッドでありますその層の値はヌルです。

なぜ値がnullで、それを修正するのか、

答えて

1

[OK]を、

まず、あなたは、GET要求に複雑なオブジェクトを通じ送信しようとしています。 GETリクエストには本文がないため、URLを介してデータを転送することに限定されているため、クエリ文字列パラメータである必要があります。

第2に、GETは、それぞれのアクションが副作用を持ってはならないという点で、同じ結果をもたらす必要があるという点で、偶発的なものです。

あなたのメソッドをPOSTに切り替えると、サーバーに副作用を引き起こしていることをより正確に伝えることができます。

これを実行したら、渡しているJSON構造に一致するモデルをC#で作成し、値を取得します。

クラス

public class Layer 
{ 
    public string LayeType {get;set;} 
    public string LayerName {get;set;} 
    public int MapId {get;set;} 

} 

Javascriptを

function saveLayer(layer, callback, error) { 
return $.ajax({ 
    url: '/Mobile/Layer/SaveLayer', 
    type: "POST", 
    async: false, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    data: { layer: layer }, 
    success: callback, 
    error: error 
}); 

機能

public JsonResult SaveLayer(Layer layer) 
{   
    return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); 
} 

はそれが

0

まず並べ替える必要があります -

はGETからタイプが

第2のポストするようにしてください -

変更タイプをオブジェクトに文字列からパラメータの型、すなわちレイヤ

レイヤクラスのプロパティを使用すると、送信されたJSONデータと一致する必要があります。

public JsonResult SaveLayer(Layer layer) 
{   
    return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); 
} 
関連する問題