【问题标题】:asp.net 5 / mvc 6 / model binder / angularasp.net 5 / mvc 6 / 模型活页夹 / 角
【发布时间】:2015-11-12 13:39:57
【问题描述】:
我不知道,因为当我按角度发帖时,不会填充对象,例如类别或状态。只是产品。
但是,请注意Request.Form 列表中的信息。
未正确执行活页夹。
我究竟做错了什么?
是否有任何 web api 配置?
我已经尝试通过 application/json,[frombody] 发送数据......我没有选择。
提前致谢。
var product = {
id: 1,
name: "Name",
categories: [
{ id: 1, name: "name 1" },
{ id: 2, name: "name 2" }
],
status: { id: 1, name: "active" }
};
var config: ng.IRequestConfig;
config = { url: "", method: "POST", headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' } };
self.$http.post("api/produto", $.param(product), config)
.success(function () {
alert("OK");
});
[HttpPost]
public ProductInfo Post(ProductInfo item)
{
return item;
}
model image
request image
【问题讨论】:
标签:
angularjs
asp.net-core-mvc
modelbinder
【解决方案1】:
试试这个:
$http({
url: "api/produto",
method: "POST",
data: product,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.then(function(response) {
// success
},
function(response) { // optional
// failed
});
【解决方案2】:
或者你可以使用快捷方式:
$http.post('api/produto', data).then(successCallback, errorCallback);
【解决方案3】:
这就是我要尝试的方法
var product = {
id: 1,
name: "Name",
categories: [
{ id: 1, name: "name 1" },
{ id: 2, name: "name 2" }
],
status: { id: 1, name: "active" }
};
var config: ng.IRequestConfig;
config = { url: "", method: "POST", headers: { 'Content-Type': 'application/json;charset=utf-8;' } };
self.$http.post("api/produto", product, config)
.success(function () {
alert("OK");
});
不同的是我发送了实际的 JavaScript 对象,它将被序列化为 JSON。 Web API 将能够将 JSON 反序列化为纯 C# 对象。
尝试匹配键/值对通常只是对复杂对象的疯狂。
【解决方案4】:
没有办法。
要么创建自定义模型绑定器,要么让新的 web api 6 mvc 始终使用 frombody 并通过 json 强制发送。
至少我的测试是这样的。
它只需发送 json 并使用 frombody。
文档,确实改变了将这个新集成模型的 web api 2 绑定到 MVC。