使用Jquery将空字典发布到ASP.NET MVC4操作

时间:2012-12-05 08:42:00

标签: c# jquery .net asp.net-mvc

我正在使用jquery将字典发布到我的控制器操作:

客户端代码:

var dict = {};
// var dict = {"type": "type-1"}; // this works fine
$.post('/MyController/MyAction?id=' + jsId + '&data=' + jsData, { additionalFields : dict }, function () { //some callback });

服务器端代码:

    public ActionResult MyAction([FromUri]Guid id, [FromUri]string data, [FromBody]Dictionary<string, string> additionalFields)
    {
        //some code
        return RedirectToAction("Index");
    }

如果没有其他数据且dict变量为空,我会在服务器端收到奇怪的数据: additionalFields字典将包含两个条目:

控制器:MyController

行动:MyAction

我如何解决它?

这是显示我发布空字典时服务器端数据的图片: strange

2 个答案:

答案 0 :(得分:1)

在字典不包含值

时,尝试将dict设置为null,然后发布到服务器
dict = null;

答案 1 :(得分:0)

看起来ModelBinder已经在“发布”请求的主体中选择了一些数据。为什么需要[FromBody]属性?

尝试删除它,这应该可以解决您的问题。