2

我正在使用 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 字典将包含两个条目:

控制器:我的控制器

行动:我的行动

我该如何解决?

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

4

2 回答 2

1

当字典不包含值时,在发布到服务器之前尝试将 dict 设置为 null

dict = null;
于 2012-12-05T10:45:24.647 回答
0

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

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

于 2012-12-05T10:52:27.910 回答