トークン置換のカスタマイズについて
パラメーター トランスフォーマーを使用してトークンの置換をカスタマイズする
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.2#use-a-parameter-transformer-to-customize-token-replacement
上記のチュートリアルに従って実装を行いました。
public class SubscriptionManagementController : Controller
{
[HttpGet("[controller]/[action]")] // Matches '/subscription-management/list-all'
public IActionResult ListAll() { ... }
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.Conventions.Add(new RouteTokenTransformerConvention(
new SlugifyParameterTransformer()));
});
}
public class SlugifyParameterTransformer : IOutboundParameterTransformer
{
public string TransformOutbound(object value)
{
if (value == null) { return null; }
// Slugify value
return Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
}
}
こうすると、チュートリアルに記載されているように
/subscription-management/list-all
でアクセスできるようになります。
ただし、従来の
/SubscriptionManagement/ListAll
ではアクセスできなくなってしまいます。
・/subscription-management/list-all
・/SubscriptionManagement/ListAll
両方のURLでアクセス可能にすることは可能でしょうか。