M6T.Core.TupleModelBinder 1.2.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package M6T.Core.TupleModelBinder --version 1.2.1
NuGet\Install-Package M6T.Core.TupleModelBinder -Version 1.2.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="M6T.Core.TupleModelBinder" Version="1.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add M6T.Core.TupleModelBinder --version 1.2.1
#r "nuget: M6T.Core.TupleModelBinder, 1.2.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install M6T.Core.TupleModelBinder as a Cake Addin
#addin nuget:?package=M6T.Core.TupleModelBinder&version=1.2.1

// Install M6T.Core.TupleModelBinder as a Cake Tool
#tool nuget:?package=M6T.Core.TupleModelBinder&version=1.2.1

M6T.Core.TupleModelBinder

This package only works with named tuples and JSON post body!!!. What this package does is simply provide bindings for your controllers that maps incoming json data to tuple object at runtime. so you dont have to create a class for all of your actions in mvc.

If you want to contribute just do it no rules. In fact some other incoming data formats and checking the request content type to bind them is very very wellcome 😃

Installation

//Nuget
Install-Package M6T.Core.TupleModelBinder

//dotnet cli
dotnet add package M6T.Core.TupleModelBinder 

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});
    }
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.4.0 14,083 11/9/2021
1.3.0 2,394 3/1/2021
1.2.1 20,808 11/16/2020
1.2.0 20,122 6/30/2020
1.1.0 949 2/10/2020
1.0.0 44,100 2/5/2019