我通过ajax将字符串传递给mvc中的action方法, 以下是我的ajax电话
$("#btnEncrypt").click(function () {
var pay = JSON.stringify({
'payload': {"exp":1442515543,"method":"Login"},
'secretKey': "123456"
});
$.ajax({
type: "POST",
url: '@Url.RouteUrl("GetData")',
data: pay,
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert("Success");
},
error: function () {
alert('error');
}
});
});
下面是我的Action方法(Generate),其中我传递了两个参数
[HttpPost]
public ActionResult Generate(string payload, string secretKey)
{
Here I am getting payload as "{\"exp\":1442515543,\"method\":\"Login\"}"
instead of "{"exp":1442515543,"method":"Login"}"
}
那么,我怎样才能得到我正在通过ajax调用的原始请求
"{"exp":1442515543,"method":"Login"}"
在没有转义字符的动作方法中?提前谢谢你:)
注意: 1)我曾尝试过不使用stringify的请求参数,但它没有用。 2)这里参数(exp和方法)根据不同的请求而变化,我有大约200个请求,它们都使用不同的参数。
答案 0 :(得分:1)
1)构建PayloadDto c#object
使用exp和方法属性,然后在方法定义中:
public ActionResult Generate(PayloadDto payload, string secretKey)
2)建立PayDto c#对象
构建一个PayDto,用于聚合PayloadDto和secretKey字符串。
public ActionResult Generate(PayDto pay)
答案 1 :(得分:0)
这里只需要在Action上反序列化有效负载以删除转义字符
var obj = new JavaScriptSerializer().Deserialize(payload,targetType:null);
问题解决了:))