您的位置:首页 > 其它

.net Core Razor Pages中定义SEO友好的URL

2018-03-16 11:00 429 查看
为什么要SEO友好的?这个不是这篇笔记的讨论范围,这里只解决怎么友好。

假如在你的project的
post.cshtml
的位置是这样的
~/pages/post.cshtml
,那么你的url就是
http://{your domain}/post
,如果想实现
http://{your domain}/post/2018/03/21
这样的url要怎么做呢,下面就是方法:

打开
Startup
类,定义你的规则

services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.RootDirectory = "/Pages";
options.AddPageRoute("/Post", "Post/{year}/{month}/{day}");
});


当然你还可以这样

options.AddPageRoute("/Categories/Laptops.cshtml", "Laptops/{id?}");


扩展其实并不复杂

public static RazorPagesOptions AddPageRoute(this RazorPagesOptions options, string pageName, string route)
{
if (options == null)
{
throw new ArgumentNullException(nameof(options));
}

if (string.IsNullOrEmpty(pageName))
{
throw new ArgumentException(nameof(pageName));
}

if (string.IsNullOrEmpty(route))
{
throw new ArgumentException(nameof(route));
}

options.Conventions.Add(new PageConvention(pageName, model =>
{
foreach (var selector in model.Selectors)
{
selector.AttributeRouteModel.SuppressLinkGeneration = true;
}

model.Selectors.Add(new SelectorModel
{
AttributeRouteModel = new AttributeRouteModel
{
Template = route,
}
});
}));

return options;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息