时间:2021-05-28
默认情况下,ASP.NET Core使用如http://localhost:5000/HomeIndex类的大驼峰路由。但是如果想使用小写的路由,并且这些路由用破折号分隔:http://localhost:5000/home-index它们比较常见且一致。
举例.NET常见路由http://localhost:5000/User/ListPages想要的效果http://localhost:5000/user/list-pages似乎上面使用特性路由可以解决这个问题。但是我不想使用,因为每个action都要手动去设置,太繁琐也很容易出错。
我想要的效果是在程序中写个扩展类做到可配置处理。
以下支持Asp.Net Core Version>=2.2
要做到这一点,首先创建SlugifyParameterTransformer类应该如下所示
public class SlugifyParameterTransformer : IOutboundParameterTransformer{ public string TransformOutbound(object value) { // Slugify value return value == null ? null : Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); }}在StartUp中ConfiregeServices这样配置
services.AddRouting(option =>{ option.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);});路由如下配置:
app.UseMvc(routes =>{ routes.MapRoute( name: "default", template: "{controller:slugify}/{action:slugify}/{id?}", defaults: new { controller = "Home", action = "Index" }); });在StartUp中ConfiregeServices这样配置
public void ConfigureServices(IServiceCollection services){ services.AddMvc(options => { options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer())); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);}在StartUp中ConfiregeServices这样配置
services.AddRouting(option =>{ option.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);});路由如下配置:
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" });});在StartUp中ConfiregeServices这样配置
services.AddControllers(options => { options.Conventions.Add(new RouteTokenTransformerConvention(new SlugifyParameterTransformer()));});在StartUp中ConfiregeServices这样配置
services.AddRazorPages(options => { options.Conventions.Add(new PageRouteTransformerConvention(new SlugifyParameterTransformer()));});这样会使/Sys/UserList路由变为/sys/user-list
在StartUp中ConfiregeServices这样配置
public void ConfigureServices(IServiceCollection services){ // Add framework services. services.AddMvc(options => options.Conventions.Add(new DashedRoutingConvention()));}译文:https://stackoverflow.com/questions/40334515/automatically-generate-lowercase-dashed-routes-in-asp-net-core
译者:realyrare
出处:https:///mhg215/
以上就是ASP.NET Core自动生成小写破折号路由的实现方法的详细内容,更多关于ASP.NET Core生成小写破折号路由的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在word文档编辑中我们经常要输入标点符号,如破折号,那么在word2007中如何输入破折号呢,下面介绍破折号输入的六种方法方法一、连续输入“-&r
在电脑上打出破折号可以通过shift加-键两个同时按住打出。需要注意破折号只有在中文输入状态才能打出,英文输入状态打出的是下横线。 键盘(Keyboard)
本文以实例讲解了asp.net实现生成静态页并添加链接的方法,非常实用的功能,通过本实例可以加深读者对于asp.net下文件操作的认识。1.创建一个静态网页模板
本文实例讲述了ASP.NET通过自定义函数实现对字符串的大小写切换功能。分享给大家供大家参考。具体实现方法如下: 方法1:publicstringTogg
破折号(——),表示话题或语气的转变,声音的延续等的符号。“行文中解释说明的语句,用破折号标明。”“