我正试图使用.NET Core 3.1在OS X中使用Visual Studio for Mac制作一个非常简单的Web服务。
我开始了一个Web应用程序模板项目,之后包括一个简单的控制器。
为了启用控制器,我在 Startup.cs
以下的线路。
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers(); //This
});
和
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddControllers(); //and this
}
所以我的控制器是这样的。
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpPost("test")]
public void Read(TestEntityModel tem)
{
Console.WriteLine(tem.txt);
}
我在调试到达Read()方法的内容,但是... ... tem
对象看起来一直是空的。
该 TestEntityModel
类看起来像这样。
public class TestEntityModel
{
public string txt { get; set; }
public float number { get; set; }
}
我用下面的AJAX代码来调用这个方法 I'm calling this method with the following AJAX code:
function send() {
var TestEntityModel = new Object();
TestEntityModel.txt = "hola";
TestEntityModel.number = 7;
$.ajax({
url: '/api/values/test',
type: 'POST',
contentType: "application/json",
dataType: 'json',
data: TestEntityModel,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log('Error in Operation');
}
});
}
但不知道是怎么回事
有谁遇到同样的问题?
从APICONTROLLER继承和添加[FromBody]属性应该做到这一点。如果没有的话,用fiddler检查你的请求是如何发送数据的。我也会确认你的net core应用是否有默认的媒体类型格式为json,我想是的,但是要确认一下。
public ActionResult<Pet> Create([FromBody] Pet pet)
也可以看看这个文档 https:/docs.microsoft.comen-usaspnetcoremvcmodelsmodel-binding?view=aspnetcore-3.1。