Knight.Response.Mvc
2.0.0-preview03
See the version list below for details.
dotnet add package Knight.Response.Mvc --version 2.0.0-preview03
NuGet\Install-Package Knight.Response.Mvc -Version 2.0.0-preview03
<PackageReference Include="Knight.Response.Mvc" Version="2.0.0-preview03" />
<PackageVersion Include="Knight.Response.Mvc" Version="2.0.0-preview03" />
<PackageReference Include="Knight.Response.Mvc" />
paket add Knight.Response.Mvc --version 2.0.0-preview03
#r "nuget: Knight.Response.Mvc, 2.0.0-preview03"
#:package Knight.Response.Mvc@2.0.0-preview03
#addin nuget:?package=Knight.Response.Mvc&version=2.0.0-preview03&prerelease
#tool nuget:?package=Knight.Response.Mvc&version=2.0.0-preview03&prerelease
Knight.Response.Mvc
Knight.Response.Mvc
provides integration between Knight.Response and ASP.NET MVC / Web API 2 (System.Web on .NET Framework 4.7.1+).
It ensures consistent API response handling with standardized result-to-HTTP mapping, including ProblemDetails
compatibility, validation error shaping, and factory methods.
This package is the MVC counterpart to Knight.Response.AspNetCore
, designed for projects that cannot use ASP.NET Core but still want the same structured response model.
Features
Extension Methods
ResultExtensions
→ ConvertsResult
/Result<T>
intoIActionResult
ServiceCollectionExtensions
→ Registers Knight.Response services for MVC
Factories
ApiResults
→ Strongly-typed helpers to return success, failure, unauthorized, forbidden, etc.ProblemFactory
→ Builds RFC 7807-compatibleProblemDetails
for error responses
Infrastructure
CompatProblemDetails
→ CompatibleProblemDetails
implementation for MVC / Web API 2CompatValidationProblemDetails
→ Validation error details aligned with modern ASP.NET Core behavior
Options
KnightResponseOptions
→ Configurable options for customizing error shape, problem details, status mapping, etc.ResultHttpResolver
→ CentralisesResult.Status
andResultCode
→ HTTP status resolution
Installation
dotnet add package Knight.Response.Mvc --version 2.0.0-preview03
This package depends on:
Knight.Response
(core results)Knight.Response.Abstractions.Http
(shared HTTP abstractions: options, resolver, validation mapper)Microsoft.AspNetCore.Mvc (2.2.0)
— referenced forProblemDetails
,ValidationProblemDetails
, and schema alignment.
Note: This does not require ASP.NET Core runtime. Types are used for schema compatibility only.
Usage
1. Configure Services
Register Knight.Response in Startup.cs
:
public class Startup
{
public void Configuration(IAppBuilder app)
{
var services = new ServiceCollection();
services.AddKnightResponse(); // from ServiceCollectionExtensions
}
}
2. Return Results in Controllers
public class AccountsController : ApiController
{
[HttpGet]
public IHttpActionResult GetAccount(string id)
{
var result = _accountService.GetById(id);
// Convert Result<T> → IActionResult
return result.ToOkActionResult();
}
[HttpPost]
public IHttpActionResult Create(CreateAccountRequest request)
{
var result = _accountService.Create(request);
// Returns standardized 201 Created or BadRequest/ProblemDetails as per configuration
return result.ToCreatedActionResult();
}
}
Success Payload Shape
Controlled by KnightResponseOptions.IncludeFullResultPayload
:
false (default since 2.0.0-preview01):
- Ok → returns
Value
(ofResult<T>
) only - Created / Accepted →
Value
only
- Ok → returns
true: return the full
Result
object on success (useful when clients want codes/messages on success).
Failure Mapping
If
UseValidationProblemDetails
is true and the mapper produces field errors → response is ValidationProblemDetails.Otherwise → response is ProblemDetails.
Status code resolution order:
CodeToHttp
(domainResultCode
→ HTTP status)StatusCodeResolver
(default mapping: Failed=400, Cancelled=409, Error=500, Completed not used)
Options
Options type comes from:
public sealed class KnightResponseOptions
: KnightResponseBaseOptions<HttpContext, ProblemDetails, ValidationProblemDetails>
{
// Core properties:
// - IncludeFullResultPayload (default: false)
// - UseProblemDetails (default: false)
// - UseValidationProblemDetails (default: false)
// - IncludeExceptionDetails (default: false)
// - CodeToHttp (optional)
// - StatusCodeResolver (default mapping provided)
// - ValidationMapper (optional override)
// - ProblemDetailsBuilder, ValidationBuilder (hooks)
}
Mapper Resolution
At runtime, the validation error mapper is resolved in this order:
- From the current request’s DI scope (
HttpContext.RequestServices
). - From the
ValidationMapper
override on options. - If neither is set,
DefaultValidationErrorMapper
is used.
Related Packages
- Knight.Response — Core response model
- Knight.Response.Abstractions.Http — Shared HTTP abstractions (options, status resolver, validation mapper)
- Knight.Response.AspNetCore — ASP.NET Core integration
Which package do I use?
- Use Knight.Response.Mvc → For System.Web MVC / Web API 2 apps targeting .NET Framework.
- Use Knight.Response.AspNetCore → For ASP.NET Core apps targeting .NET 6/7/8+.
License
This project is licensed under the MIT License.
Contributing
Contributions are welcome! Please read CONTRIBUTING.md.
Product | Versions 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 was computed. 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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Knight.Response.Abstractions.Http (>= 2.0.0-preview02)
- Microsoft.AspNetCore.Mvc (>= 2.2.0)
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 |
---|---|---|
2.0.0-preview04 | 33 | 9/27/2025 |
2.0.0-preview03 | 102 | 9/25/2025 |
2.0.0-preview02 | 109 | 9/24/2025 |
2.0.0-preview01 | 195 | 9/24/2025 |
1.0.0 | 134 | 9/14/2025 |
0.1.0 | 134 | 9/14/2025 |
- Now uses ResultHttpResolver (CodeToHttp first, then Status fallback).
- Honors codes like NoContent/NotFound; upgrades default 200→204 when applicable.
- ProblemDetails path unchanged; validation mapper resolved per-request.
- Updated deps: Core 2.0.0-preview04