【发布时间】:2023-02-13 11:28:48
【问题描述】:
我正在尝试创建随机值并将它们发送到位于 mvc api 控制器中的控制器。但是我在 api 中的数据总是像默认值一样为 0 或 null。在控制台应用程序中,我正在创建它们,但我的数据为空或 0。我真正的问题是什么?
我的控制台代码:
using MSE.DTO.DTOs.WorkStation;
using Newtonsoft.Json;
using System.Net.Http.Json;
using System.Text;
var random = new Random(DateTime.Now.Millisecond);
var data = new WorkStationRandomValueDTO
{
WorkStationId = random.Next(1, 100),
Temperature = (decimal)Math.Round(random.NextDouble() * 100, 2),
Pressure = (decimal)Math.Round(random.NextDouble() * 2000, 2),
Status = random.Next(0, 1) == 1
};
using (var client = new HttpClient())
{
var content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var response = await client.PostAsync("http://localhost:5002/WorkStationRandom/Post", content);
if (response.IsSuccessStatusCode)
{
Console.WriteLine($"WorkStationId: {data.WorkStationId}\nTemperature: {data.Temperature}\nPressure: {data.Pressure}\nStatus: {data.Status}\n ");
Console.WriteLine("Data posted successfully");
}
else
{
Console.WriteLine("Error occured while posting data");
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
Console.ReadLine();
我的 Mvc API 代码:
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using MSE.DataAccess.Context;
using MSE.DTO.DTOs.WorkStation;
using MSE.Entity.Entities.Concrete;
using FromBodyAttribute = System.Web.Http.FromBodyAttribute;
using HttpGetAttribute = System.Web.Http.HttpGetAttribute;
using HttpPostAttribute = System.Web.Http.HttpPostAttribute;
namespace MSE.Web.Controllers
{
public class WorkStationRandomController : ControllerBase
{
private readonly ApplicationDbContext _dbContext;
private readonly IMapper _mapper;
public WorkStationRandomController(ApplicationDbContext dbContext, IMapper mapper)
{
_dbContext = dbContext;
_mapper = mapper;
}
[HttpPost]
public IActionResult Post([FromBody] WorkStationRandomValueDTO data)
{
if (data != null && data.WorkStationId != 0 && data.Temperature != 0 && data.Pressure != 0)
{
data.Status = true;
var workStation = _mapper.Map<WorkStation>(data);
_dbContext.WorkStations.Add(workStation);
_dbContext.SaveChanges();
return Ok();
}
else
{
return BadRequest("Data is not valid.");
}
}
[HttpGet]
public string Get()
{
return "ok";
}
}
}
在这张照片中你可以看到我的问题。
谢谢。
我的观点是在控制台中创建随机值并将它们发送到控制器。但我总是得到 0 或空值。
【问题讨论】:
-
你的创业公司有
services.AddControllers().AddNewtonsoftJson();吗? -
请edit你的问题来分享一个重现问题的minimal reproducible example。具体来说,
WorkStationRandomValueDTO的定义是什么?例如。它有字段或属性吗? -
是的,我有 stuard,但仍然无法正常工作。我唯一的问题是我的数据为空或 0。
-
@yigit_tanyel 在您的代码中我可以看到 [FromBody],但图像中没有。它应该是。您还需要发布 WorkStationRandomValueDTO 类
标签: c# asp.net-core json.net