我最近一直在使用新的ASP.NET 5
系统和微软的ASP.NET MVC 6
,但是我发现有几个非常关键的问题阻碍了我向前发展;其中最重要的是我似乎无法再通过控制器方法传递多个JSON
参数。
例如,我有以下控制器方法;
[HttpPost]
[Route("edit/profile")]
public void Attribute([FromBody]Models.Profile model, bool editing) {
// ...
// model always comes in null
// editing always comes in default (false)
}
我正在尝试使用$.ajax
将数据传递给该控制器。
$.ajax({
url: '/edit/profile',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({ model: _this.model, editing: true })
});
但无论我做什么,控制器始终传递null
参数。我尝试了各种方法,如果忽略({ model : _this.model ... })
部分,只传递一个参数,那么它将按预期传递data: JSON.stringify(_this.model)
模型如下所示;(显然不是最终模型,只是在解决此问题时的虚拟模型)
_this.model = {
Id: null,
Name: null
Text: null
};
它对应于这个C#
类:
namespace Models {
public class Profile {
public string Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
}
}
我真的无法理解它。在 MVC 5
上它运行得很好,但自从升级后就完全失效了。
我还在使用 jQuery 2.1.4
JSON.stringify
,并将纯对象作为数据传递:data: { model: _this.model, editing: true }
- Domyseeediting
上添加[FromBody]
。 - Domysee