Lets you use StrEnum string enums with ASP.NET Core.
Supports ASP.NET Core 6 – 10. For ASP.NET Core 5, use v2.0.0.
Install StrEnum.AspNetCore via the .NET CLI:
dotnet add package StrEnum.AspNetCore
If you're using WebApplicationBuilder, call AddStringEnums() in Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddControllers()
.AddStringEnums();For the ASP.NET Core 3.1–5 IWebHostBuilder, call AddStringEnums() in ConfigureServices in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services
.AddControllers()
.AddStringEnums();
}public class Sport : StringEnum<Sport>
{
public static Sport TrailRunning = Define("TRAIL_RUNNING");
public static Sport RoadCycling = Define("ROAD_CYCLING");
}
public class Race
{
public string Name { get; set; }
public Sport Sport { get; set; }
}Bind from the request body and serialize them back in the response:
[HttpPost]
public ActionResult<Race> BodyPost([FromBody] Race race) // race.Sport is deserialized correctly
{
return Ok(race); // race.Sport is serialized back
}Bind from a route parameter:
[HttpGet]
[Route("{sport}")]
public ActionResult<ResponseWithStrEnum> GetFromRoute(Sport sport) { ... }Bind from a query string parameter:
[HttpGet]
[Route("get")]
public ActionResult<ResponseWithStrEnum> GetFromQuery([FromQuery] Sport sport) { ... }
// `get?sport=trail_running` binds to Sport.TrailRunningBind to an array of query string parameters:
[HttpGet]
[Route("get")]
public ActionResult<ResponseWithStrEnum> GetFromQuery([FromQuery] Sport[] sports) { ... }
// `get?sports=trail_running&sports=road_cycling` binds to [Sport.TrailRunning, Sport.RoadCycling]Copyright © 2026 Dmytro Khmara.
StrEnum is licensed under the MIT license.