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>&nbsp;</td>
                <td>
                    <input type="submit" value="Save" />
                </td>
            </tr>




        </table>
    </form>
</body>
</html>
mj1313

如果要接受 Json 原始请求数据,则需要添加 [FromBody] 属性。

[HttpPost]
[Route("Add")]
public IActionResult Add([FromBody]Continous continous)
{
        
    db.Continous.Add(continous);
    db.SaveChanges();

    return RedirectToAction("Index");
}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET Core Authorize属性不适用于JWT

Asp.net Core 2.0 Configure.Services <model>()绑定不适用于用户机密

Visual Studio 2017 Docker支持不适用于ASP.Net Core Angular或React项目

更改默认操作不适用于ASP.NET Core 2

重定向到动作不适用于ASP.NET Core

调用SignalR Hub不适用于Asp.Net Core Web API

ToList()不适用于Asp.Net Core动态生成的where子句

共享布局视图不适用于ASP.NET Core 2.1中的所有视图

在asp.net core 2.1中产生不适用于xml的数据注释

ASP.NET Core CORS配置不适用于Firefox

FromBody路由不适用于ASP.NET Core

asp.net core 2.1,Include()功能不适用于db first方式

.Net Core Web API基本身份验证授权不适用于Azure

ASP.NET Core 3.1中的asp-action不适用于端点路由

ASP.NET Core appsettings.json reloadOnChange不适用于symlink文件吗?

如何使用Postman使用Cookie身份验证测试ASP.NET Core Web API?

Web配置Windows授权。适用于部署,但不适用于本地。ASP.net

编辑并继续不适用于VS 2019(C#)的asp.net core 3.0

.net Core API 不适用于 IIS

序列迁移不适用于 ASP.NET Core 2.1

HiddenInput 不适用于 ASP.NET Core 2.2 脚手架

我在 ASP.NET Core 2.2 Web API 中设置了 JWT 中间件。它仅适用于 RSA256 而不适用于 HS256

Asp.net .core web api 版本控制不适用于 Url 路径段

ASP.NET Core 授权不适用于嵌套角色

Asp.Net Core 应用程序不适用于其他领域

路由不适用于 asp.net api 项目

ASP.NET Core API 的 GET 请求中的可选参数不适用于 Swagger

ASP.NET Core Web API 不适用于 Azure

在 ASP.NET Core web api 中读取 JSON 值