从c#中的对象或字符串中删除转义字符?

时间:2015-09-26 12:39:36

标签: c# json ajax asp.net-mvc stringify

我通过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个请求,它们都使用不同的参数。

2 个答案:

答案 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);

问题解决了:))