visual-studio - Postman JSON 不适用于 ASP.NET Core Web API
问题描述
我正在尝试使用 ASP.NET Core MVC 构建一个简单的 API。
我已经成功构建了一个具有获取、发布、编辑和删除功能的 api。然而,邮递员 JSON 原始帖子会产生 Null 值,但是如果我使用表单数据,它会完美运行。
我想将数据作为原始 json 发送,知道我做错了什么吗?
我的模型
[Table("continous value monitoring")]
public class Continous
{
[Key]
public int UserID { get; set; }
public float Value { get; set; }
public string ReadingType { get; set; }
}
数据上下文:
public class DataContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var configuration = builder.Build();
optionBuilder.UseMySql(configuration
["ConnectionString:DefaultConnection"]);
}
public DbSet<Continous> Continous { get; set; }
}
控制器
[Produces("application/json")]
[Route("continous")]
public class ContinousController : Controller
{
private DataContext db = new DataContext();
[Route("")]
[Route("index")]
[Route("~/")]
public IActionResult Index()
{
ViewBag.Continous = db.Continous.ToList();
return View();
}
[HttpGet]
[Route("Add")]
public IActionResult Add()
{
return View("Add");
}
[HttpPost]
[Route("Add")]
public IActionResult Add(Continous continous)
{
db.Continous.Add(continous);
db.SaveChanges();
return RedirectToAction("Index");
}
[HttpGet]
[Route("Delete/{UserID}")]
public IActionResult Delete(int UserID)
{
db.Continous.Remove(db.Continous.Find(UserID));
db.SaveChanges();
return RedirectToAction("Index");
}
[HttpGet]
[Route("edit/{UserID}")]
public IActionResult Edit(int UserID)
{
return View("Edit", db.Continous.Find(UserID));
}
[HttpPost]
[Route("edit/{UserID}")]
public IActionResult Edit(int UserID, Continous continous)
{
db.Entry(continous).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
查看添加对应的文件
<!DOCTYPE html>
<html>
<head>
<meta name="viewpoint" content="width=device-width" />
<title>Add</title>
</head>
<body>
<form method="post" asp-controller="continous" asp-action="add">
<table>
<tr>
<td>UserID</td>
<td>
<input type="number" asp-for="UserID" min="0" required="required" />
</td>
</tr>
<tr>
<td>Value</td>
<td>
<input type="number" asp-for="Value" min="0" required="required" />
</td>
</tr>
<tr>
<td>Reading Type</td>
<td>
<input type="text" asp-for="ReadingType" required="required" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="Save" />
</td>
</tr>
</table>
</form>
</body>
</html>
解决方案
推荐阅读
- c - 从 C 中的标准输入读取不可预测和不确定(即没有 EOF)大小的输入的最佳方法是什么?
- javascript - 为什么没有定义道具展示?
- mysql - MQTT esp8266 client.subscribe() 不工作
- javascript - 无法单击 Safari 中的元素
- php - 通过 PHP 显示一个按钮
- javascript - 使用 JavaScript 事件调整窗口大小时如何调整图像大小?
- html - 格式化 HTML 表单
- node.js - API 调用仅适用于 IP 地址,不适用于我的域(Node.js Express、Godaddy、Google Compute Engine)
- git - 无法通过 PhpStorm [MacOs] 将文件推送到 GitHub
- java - 为什么这个基于数组的 Java 游戏不起作用?