Aggiornamento nella versione ASP.NET Core> = 2.2
Da ASP.NET core 2.2 , insieme a lettere minuscole si può anche rendere il vostro itinerario tratteggiata usando ConstraintMapche renderà il vostro percorso /Employee/EmployeeDetails/1a /employee/employee-details/1posto di /employee/employeedetails/1.
Per fare ciò, prima creare la SlugifyParameterTransformerclasse dovrebbe essere come segue:
public class SlugifyParameterTransformer : IOutboundParameterTransformer
{
public string TransformOutbound(object value)
{
return value == null ? null : Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
}
}
Per ASP.NET Core 2.2 MVC:
Nel ConfigureServicesmetodo della Startupclasse:
services.AddRouting(option =>
{
option.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);
});
E la configurazione del percorso dovrebbe essere la seguente:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller:slugify}/{action:slugify}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
Per l'API Web ASP.NET Core 2.2:
Nel ConfigureServicesmetodo della Startupclasse:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Per ASP.NET Core> = 3.0 MVC:
Nel ConfigureServicesmetodo della Startupclasse:
services.AddRouting(option =>
{
option.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);
});
E la configurazione del percorso dovrebbe essere la seguente:
app.UseEndpoints(endpoints =>
{
endpoints.MapAreaControllerRoute(
name: "AdminAreaRoute",
areaName: "Admin",
pattern: "admin/{controller:slugify=Dashboard}/{action:slugify=Index}/{id:slugify?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller:slugify}/{action:slugify}/{id:slugify?}",
defaults: new { controller = "Home", action = "Index" });
});
Per ASP.NET Core> = 3.0 API Web:
Nel ConfigureServicesmetodo della Startupclasse:
services.AddControllers(options =>
{
options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
});
Per ASP.NET Core> = 3.0 Razor Pages:
Nel ConfigureServicesmetodo della Startupclasse:
services.AddRazorPages(options =>
{
options.Conventions.Add(new PageRouteTransformerConvention(new SlugifyParameterTransformer()));
})
Questo farà /Employee/EmployeeDetails/1rotta verso/employee/employee-details/1
AddMvc()tuoStartup.ConfigureServices()metodo.AddRouting()che viene anche chiamato daAddMvc()utilizza leTryvarianti dei metodi per aggiungere dipendenze alla raccolta di servizi. Quindi, quando vede che le dipendenze di routing sono già state aggiunte, salterà quelle parti dellaAddMvc()logica di installazione.