如何在客户端项目中自定义Razor类库页面的访问URL
ASP.NET Core 6 RCL 页面自定义访问路径配置方法
你不需要修改RCL类库的源码,直接在引用RCL的客户端项目里做服务配置即可实现路径自定义,以下是可直接落地的配置方式:
保留原路径,新增自定义访问路径
打开客户端项目的Program.cs,在注册Razor Pages服务的代码段追加路由约定配置,示例代码如下:var builder = WebApplication.CreateBuilder(args); // 原有注册Razor Pages的代码,追加路由配置 builder.Services.AddRazorPages() .AddRazorPagesOptions(opt => { // 第一个参数是RCL内页面的默认路由路径,第二个参数是你要自定义的新路径 opt.Conventions.AddPageRoute("/Page1", "/Foo/Page1"); });配置完成后,
/Page1和/Foo/Page1两个路径都可以正常访问到RCL里的Page1页面。完全替换原路径,仅保留自定义路径
如果你不想让原默认路径/Page1可访问,只保留新的/Foo/Page1路径,用下面的配置直接修改路由模板即可:builder.Services.AddRazorPages() .AddRazorPagesOptions(opt => { opt.Conventions.AddFolderRouteModelConvention("/", model => { foreach (var selector in model.Selectors) { if (selector.AttributeRouteModel.Template?.Equals("Page1", StringComparison.OrdinalIgnoreCase) == true) { selector.AttributeRouteModel.Template = "Foo/Page1"; } } }); });配置生效后,访问原
/Page1路径会返回404,仅/Foo/Page1可正常访问。批量给RCL所有页面加统一前缀
如果你后续在RCL里新增了多个页面,想给所有RCL页面统一加上/Foo前缀,不需要逐页配置,可以在上面的遍历逻辑里判断页面来源为RCL程序集后,统一给路由模板拼接Foo/前缀即可。
配置完成后重启客户端项目即可生效,不需要修改RCL内的任何页面代码,完全符合类库复用、使用方自定义路由的需求。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

