Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 已激发action方法,但传递的参数值为null_Asp.net_Asp.net Mvc_Asp.net Ajax - Fatal编程技术网

Asp.net 已激发action方法,但传递的参数值为null

Asp.net 已激发action方法,但传递的参数值为null,asp.net,asp.net-mvc,asp.net-ajax,Asp.net,Asp.net Mvc,Asp.net Ajax,我使用ASP MVC 5。 我尝试将数据从客户端发送到服务器上的action方法 以下是我发送的数据: var layer = { layeType:"Vector" layerName:"aaaa" mapId:5 } 这里是ajax方法: function saveLayer(layer, callback, error) { return $.aja

我使用ASP MVC 5。 我尝试将数据从客户端发送到服务器上的action方法

以下是我发送的数据:

  var layer = { 
                layeType:"Vector"
                layerName:"aaaa"
                mapId:5
               }
这里是ajax方法:

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
    });
以下是行动方法:

 public JsonResult SaveLayer(string layer) 
        {         
           return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet);
        }
已激发action方法,但层的值为null

知道值为什么为空以及如何修复它吗?

好的

首先,您正试图通过GET请求发送一个复杂对象。GET请求没有正文,它们仅限于通过Url传输数据,因此它需要是一个查询字符串参数

其次,遵循rest约定,GET是幂等的,因为每个操作都不应该有副作用,重复调用它应该产生相同的结果

我会将您的方法切换到一个帖子,因为这将更准确地传达您将对服务器造成副作用

在您完成之后,我将用C创建一个与您正在传递的json结构相匹配的模型,然后您将通过它获得一个值

阶级

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);
}
应该先对它进行排序

-

从GET to POST开始键入

第二-

将参数类型从字符串更改为对象类型,即图层

Layer类中的属性应该与您发送的json数据匹配

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