I am trying to built a simple API using ASP.NET Core MVC.
I have successfully built an api with get, post and edit and delete functions. However the Postman JSON raw post results in Null value however if I use form data, it works perfectly.
I want to send the data as raw json, any idea what am I doing wrong?
My model
[Table("continous value monitoring")]
public class Continous
{
[Key]
public int UserID { get; set; }
public float Value { get; set; }
public string ReadingType { get; set; }
}
Data Context:
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; }
}
Controller
[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");
}
}
View File corresponding to 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>
