发帖JSON到MVC控制器 - 字符串参数为null(posting JSON to MVC con

2019-07-31 19:53发布

我故意尽量不使用控制器参数的绑定,所以我有一个控制器,看起来像:

 [HttpPost]
        public ActionResult UntypedForm(String serializedformdata)
        {
        //// ...
        }

当我后的序列化的JSON格式元件与下面的代码,所述控制器:

var formelements = $('#form').serializeArray();
$.post(url, formelements, function (data) {

    }, "json").error(function () {
        alert("Error posting to " + url); 
    });

我得到的字符串serializedformdata我控制器上的NULL值。 然而,当我与一个强类型的对象替换字符串serializedformdata,如预期正常结合的作品。

我的控制器的整点是通用的JSON的帖子,在这里我将创建一个文件BSON要放入一个蒙戈数据库。 SO ....我故意不想要的模型结合,我想序列化的字符串作为pamameter。 为什么我的serializedformdata串空当我发布?

注 - 我也试图绑定到辞典

public ActionResult UntypedForm(Dictionary<string,string> serializedformdata)
            {
            //// ...
            }

但serializedformdata仍然是空。

Answer 1:

该功能serializeArray创建与形式的键/值对的Javascript对象。 你不希望出现这种情况,你想用一个键/值serializedformdata =(JSON字符串)。 即,像这样的;

var formelements = { serializedformdata: JSON.stringify($('#form').serializeArray()) };

这通过原始JSON字符串到控制器的参数。 您可以使用JavaScriptSerializer来获取服务器上的对象:

var obj = (List<Dictionary<string,string>>)new JavaScriptSerializer().Deserialize(serializedformdata, typeof(List<Dictionary<string,string>>));
Dictionary<string,string> dict = obj.First();
string someval = dict["somekey"];


文章来源: posting JSON to MVC controller - String parameter is null