Using a C# 7 tuple in an ASP.NET Core Web API Controller

后端 未结 2 1945
别跟我提以往
别跟我提以往 2020-12-03 17:16

Do you know why this works:

    public struct UserNameAndPassword
    {
        public string username;
        public string password;
    }


    [HttpPost         


        
2条回答
  •  眼角桃花
    2020-12-03 17:49

    You can use this package. This package binds json body to your models.

    Github Repo

    Installation

    //Nuget
    Install-Package M6T.Core.TupleModelBinder -Version 1.0.0
    
    //dotnet cli
    dotnet add package M6T.Core.TupleModelBinder --version 1.0.0
    

    Usage

    Modify startup.cs like

    using M6T.Core.TupleModelBinder;
    ....
    
    public void ConfigureServices(IServiceCollection services)
    {
      services.AddMvc(options =>
      {
          options.ModelBinderProviders.Insert(0, new TupleModelBinderProvider());
      });
    }
    

    Post request body

    {
      "user" : {
        "Name":"Test",
        "Surname":"Test2",
        "Email":"example@example.com"
      },
      "someData" : "If you like it, you put a data on it"
    }
    

    And in your controller use it like

    [HttpPost]
    public IActionResult CreateUser((User user, string someData) request)
    {
        using (var db = new DBContext())
        {
            var newUser = db.Users.Add(request.user);
            db.SaveChanges();
            return Json(new { userId = request.user.Id, someData = request.someData});
        }
    }
    

提交回复
热议问题