Sgw.KebabCaseRouteTokens 1.1.0

Provides Model Convention classes to change auto-generated ASP.NET Core urls from PascalCase to kebab-case

Install-Package Sgw.KebabCaseRouteTokens -Version 1.1.0
dotnet add package Sgw.KebabCaseRouteTokens --version 1.1.0
<PackageReference Include="Sgw.KebabCaseRouteTokens" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sgw.KebabCaseRouteTokens --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

kebab-case-route-tokens

ASP.NET Core model conventions to turn route tokens into kebab case urls

dotnet add package Sgw.KebabCaseRouteTokens

https://www.nuget.org/packages/Sgw.KebabCaseRouteTokens/

Purpose

When you normally use the Microsoft.AspNetCore.Mvc.RouteAttribute type to annotate your Controllers and Actions you can use tokens in your route paths.

Example:

[Route("api/[controller]")]
public class UserRegistrationController
{
    [HttpPost]
    [Route("[action]")]
    public ActionResult CreateNewUserRegistration(UserRegistration registration)
    {
        // ...
    }

    [HttpGet]
    [ActionName("TestIt")]
    [Route("[action]")]
    public ActionResult GetUserData()
    {
        // ...
    }
}

These tokens will automatically be replaced by Mvc with the name of the controller (in the case of &quot;[controller]&quot; without the &quot;Controller&quot; suffix).

The resulting url for the first action above would be POST /api/UserRegistration/CreateNewUserRegistration

If you prefer kebab-case over PascalCase for your urls and you want to use the [controller]/[action] token replacement in the RouteAttributes you can use the convention classes in this project.

Usage

In your Startup.cs add the Convention classes to your MvcOptions.Conventions collection.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
        {
            options
                .Conventions
                .Add(new KebabCaseRouteTokenReplacementControllerModelConvention());

            var methodNamePrefixes = new string[]
            {
                "Create", "Delete", "Update", "Get", "Find"
            };

            options
                .Conventions
                .Add(new KebabCaseRouteTokenReplacementActionModelConvention(methodNamePrefixes));
        });
    }
}

Any method prefixes supplied to the KebabCaseRouteTokenReplacementActionModelConvention will be removed from the action method name before performing kebab-case conversion.

With the above example controller and action method the resulting generated url would be POST /api/user-registration/new-user-registration.

Since the second action method GetData has a custom action name set by [ActionName(&quot;TestIt&quot;)], no kebab-casing is performed on the action method url. The resulting url would be GET /api/user-registration/TestIt

If the ActionNameAttribute was not applied the resulting url would be GET /api/user-registration/user-data

kebab-case-route-tokens

ASP.NET Core model conventions to turn route tokens into kebab case urls

dotnet add package Sgw.KebabCaseRouteTokens

https://www.nuget.org/packages/Sgw.KebabCaseRouteTokens/

Purpose

When you normally use the Microsoft.AspNetCore.Mvc.RouteAttribute type to annotate your Controllers and Actions you can use tokens in your route paths.

Example:

[Route("api/[controller]")]
public class UserRegistrationController
{
    [HttpPost]
    [Route("[action]")]
    public ActionResult CreateNewUserRegistration(UserRegistration registration)
    {
        // ...
    }

    [HttpGet]
    [ActionName("TestIt")]
    [Route("[action]")]
    public ActionResult GetUserData()
    {
        // ...
    }
}

These tokens will automatically be replaced by Mvc with the name of the controller (in the case of &quot;[controller]&quot; without the &quot;Controller&quot; suffix).

The resulting url for the first action above would be POST /api/UserRegistration/CreateNewUserRegistration

If you prefer kebab-case over PascalCase for your urls and you want to use the [controller]/[action] token replacement in the RouteAttributes you can use the convention classes in this project.

Usage

In your Startup.cs add the Convention classes to your MvcOptions.Conventions collection.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
        {
            options
                .Conventions
                .Add(new KebabCaseRouteTokenReplacementControllerModelConvention());

            var methodNamePrefixes = new string[]
            {
                "Create", "Delete", "Update", "Get", "Find"
            };

            options
                .Conventions
                .Add(new KebabCaseRouteTokenReplacementActionModelConvention(methodNamePrefixes));
        });
    }
}

Any method prefixes supplied to the KebabCaseRouteTokenReplacementActionModelConvention will be removed from the action method name before performing kebab-case conversion.

With the above example controller and action method the resulting generated url would be POST /api/user-registration/new-user-registration.

Since the second action method GetData has a custom action name set by [ActionName(&quot;TestIt&quot;)], no kebab-casing is performed on the action method url. The resulting url would be GET /api/user-registration/TestIt

If the ActionNameAttribute was not applied the resulting url would be GET /api/user-registration/user-data

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.1.0 691 7/22/2018
1.0.0 154 7/18/2018