Muh*_*lam 0 visual-studio asp.net-core-mvc
我正在尝试使用 ASP.NET Core MVC 构建一个简单的 API。
我已经成功构建了一个具有获取、发布、编辑和删除功能的 api。然而,Postman 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; }
}
Run Code Online (Sandbox Code Playgroud)
数据上下文:
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; }
}
Run Code Online (Sandbox Code Playgroud)
控制器
[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");
}
}
Run Code Online (Sandbox Code Playgroud)
查看Add对应的文件
<!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>
Run Code Online (Sandbox Code Playgroud)
如果您想接受Json原始请求数据,则需要添加[FromBody]属性。
[HttpPost]
[Route("Add")]
public IActionResult Add([FromBody]Continous continous)
{
db.Continous.Add(continous);
db.SaveChanges();
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3593 次 |
最近记录: |