我正在使用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
我如何解决它?
这是显示我发布空字典时服务器端数据的图片:
答案 0 :(得分:1)
在字典不包含值
时,尝试将dict设置为null,然后发布到服务器dict = null;
答案 1 :(得分:0)
看起来ModelBinder已经在“发布”请求的主体中选择了一些数据。为什么需要[FromBody]属性?
尝试删除它,这应该可以解决您的问题。