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 ConstraintMap
che renderà il vostro percorso /Employee/EmployeeDetails/1
a /employee/employee-details/1
posto di /employee/employeedetails/1
.
Per fare ciò, prima creare la SlugifyParameterTransformer
classe 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 ConfigureServices
metodo della Startup
classe:
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 ConfigureServices
metodo della Startup
classe:
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 ConfigureServices
metodo della Startup
classe:
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 ConfigureServices
metodo della Startup
classe:
services.AddControllers(options =>
{
options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));
});
Per ASP.NET Core> = 3.0 Razor Pages:
Nel ConfigureServices
metodo della Startup
classe:
services.AddRazorPages(options =>
{
options.Conventions.Add(new PageRouteTransformerConvention(new SlugifyParameterTransformer()));
})
Questo farà /Employee/EmployeeDetails/1
rotta verso/employee/employee-details/1
AddMvc()
tuoStartup.ConfigureServices()
metodo.AddRouting()
che viene anche chiamato daAddMvc()
utilizza leTry
varianti 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.