Javascript Asp.net Web API模型在POST请求时绑定为空
当我从我的前端(vue.js)向asp.net web API(使用.net CORE)发出POST请求时,当在控制器的方法中使用复杂类型时,当我直接发送json对象请求时,模型绑定显示null,但当我在前端将json转换为json字符串并使用一个变量发送时,请求有效 我来自vue.js的请求Javascript Asp.net Web API模型在POST请求时绑定为空,javascript,c#,.net,vue.js,asp.net-core,Javascript,C#,.net,Vue.js,Asp.net Core,当我从我的前端(vue.js)向asp.net web API(使用.net CORE)发出POST请求时,当在控制器的方法中使用复杂类型时,当我直接发送json对象请求时,模型绑定显示null,但当我在前端将json转换为json字符串并使用一个变量发送时,请求有效 我来自vue.js的请求 let data = JSON.stringify({"name":"myname","phone":"555555"});
let data = JSON.stringify({"name":"myname","phone":"555555"});
var config = {
method: 'post',
url: 'http://localhost:4003/api/Controller/Request',
headers: {
'Content-Type': 'application/json'
},
data : data
};
如上所示,我需要将其转换为字符串,然后在一个变量中发送json字符串。(本工程)
但是,如果我将请求作为一个直接的原始json主体发送,那么复杂模型将显示所有null
值
axios.post(http://localhost:4003/api/Controller/Request, {
"name": "myname",
"phone": "5555555"
}, {
headers: {
'Content-Type': 'application/json'
}
});
我的控制器的方法如下
public async Task<IActionResult> Post([FromBody] NameModel input)
现在我的问题是,为什么模型绑定不直接在原始请求中映射属性名?由于要通读文档,所以在使用复杂类型时,这应该会自动发生
另外,当我只从前端发送一个变量
数据时,映射是如何发生的startup.cs
文件中的Iconfigure
?您可能想使用{name:“myname”,phone:“5555555”}
Hi,是的,我也试过。在axios.post中,URL周围没有引号(http://localhost:4003/api/Controller/Request
@PHPNoob在第二个示例中,您需要对数据进行字符串化。如果传递的数据的格式与预期的编码不匹配,那么它将不会绑定。这正是它的设计方式。
public class NameModel
{
public string name { get;set; }
public string phone { get; set; }
}