Simplify.Web.Multipart 1.9.0

dotnet add package Simplify.Web.Multipart --version 1.9.0
                    
NuGet\Install-Package Simplify.Web.Multipart -Version 1.9.0
                    
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="Simplify.Web.Multipart" Version="1.9.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Simplify.Web.Multipart" Version="1.9.0" />
                    
Directory.Packages.props
<PackageReference Include="Simplify.Web.Multipart" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Simplify.Web.Multipart --version 1.9.0
                    
#r "nuget: Simplify.Web.Multipart, 1.9.0"
                    
#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.
#:package Simplify.Web.Multipart@1.9.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Simplify.Web.Multipart&version=1.9.0
                    
Install as a Cake Addin
#tool nuget:?package=Simplify.Web.Multipart&version=1.9.0
                    
Install as a Cake Tool

Simplify.Web.Multipart

Nuget Version Nuget Download Build Package Libraries.io dependency status for latest release CodeFactor Grade Platform

Simplify.Web.Multipart is a package which provides multipart form view model and model binder for Simplify.Web web-framework.

Quick start

Registering binder

public void Configuration(IApplicationBuilder app)
{
    // ...existing code...
    HttpModelHandler.RegisterModelBinder<HttpMultipartFormModelBinder>();
    // ...existing code...
    app.UseSimplifyWeb();
}

public void ConfigureServices(IServiceCollection services)
{
    // ...existing code...
    DIContainer.Current.RegisterHttpMultipartFormModelBinder();
    // ...existing code...
}

Getting files from client

Asynchronous
public class MyController : ControllerAsync<MultipartViewModel>
{
    public override async Task<ControllerResponse> Invoke()
    {
        await ReadModelAsync();

        Model.Files;
    }
}
Synchronous

Multipart files will be deserialized to the controller model on first model access

public class MyController : Controller<MultipartViewModel>
{
    public override ControllerResponse Invoke()
    {
        Model.Files;
    }
}

Binding parameters to a strongly typed model

Instead of searching through the Parameters list manually, you can bind the multipart form parameters to a strongly typed model the same way as for a regular query/form/JSON request. Inherit your model from MultipartModel (which exposes Files) and add your own properties:

public class UploadModel : MultipartModel
{
    public string Title { get; set; }

    public int Count { get; set; }
}

The parameters are parsed into the model properties automatically (the same parser as Simplify.Web query/form binding is reused, so [BindProperty], [Exclude], [Format], IList<T> properties and validation attributes are all supported), while the uploaded files remain accessible via Model.Files:

public class MyController : Controller2<UploadModel>
{
    public async Task<ControllerResponse> Invoke()
    {
        Model.Title; // bound from the "Title" multipart parameter
        Model.Count; // bound from the "Count" multipart parameter
        Model.Files; // uploaded files
    }
}

The legacy MultipartViewModel (which exposes the raw Parameters list) still works as before and now also inherits from MultipartModel.

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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
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.9.0 0 6/26/2026
1.8.0 542 6/5/2024
1.8.0-pre01 297 6/1/2024
1.7.2 357 8/26/2023
1.7.1 449 2/11/2023
1.7.0 494 1/10/2023
1.6.0 642 7/24/2022
1.5.0 659 6/4/2022
1.4.5 695 5/18/2022
1.4.4 692 3/13/2022
1.4.3 5,813 11/24/2021
1.4.2 654 4/26/2021
1.4.1 620 2/28/2021
1.4.0 702 1/5/2021
1.3.2 740 12/11/2020
1.3.1 777 10/26/2020
1.3.0 816 4/29/2020
1.2.0 870 12/22/2019
1.2.0-pre01 658 12/17/2019
1.1.0 846 10/21/2019
Loading failed