Asp.net 已激发action方法,但传递的参数值为null
我使用ASP MVC 5。 我尝试将数据从客户端发送到服务器上的action方法 以下是我发送的数据: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
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);
}