Uthistran Selvaraj.
Uthistran Selvaraj.

Reputation: 558

ajax postback does not work for byte array

I am trying to sent a byte[] in a postback action, but failed to get it. Code snippets:

$.ajax({
        url: proxy.Model.RequestParamUrl,
        type: "Post",
        async: false,
        data: proxy.requestArgs,
        dataType: 'json',
        success: function (Jsondata) {
            proxy.allowPost = false;
            proxy.postSucceed = true;
            //hidden code
            return true;
        }
    });

While debugging, I can see byte[] in proxy.requestArgs. But in the controller, I get null in this action result.

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(byte[] param)
    {
//I get null in this param.
}

Anything I am missing out? Any Solution

Upvotes: 0

Views: 909

Answers (2)

M.Ob
M.Ob

Reputation: 1857

You're passing data to the controller action and that action is expecting a post item named param. So in your JS, make your ajax call look like this (note the change to data):

$.ajax({
    url: proxy.Model.RequestParamUrl,
    type: "Post",
    async: false,
    data: { param: proxy.requestArgs },
    dataType: 'json',
    success: function (Jsondata) {
        proxy.allowPost = false;
        proxy.postSucceed = true;
        //hidden code
        return true;
    }
});

Upvotes: 4

lbrahim
lbrahim

Reputation: 3810

Have you tried this? Basically, accept the data as string in you action and inside it convert it into byte[]

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string param)
{
   var bytes = System.Text.Encoding.UTF8.GetBytes(param);
}

Upvotes: 1

Related Questions