遵循https://www.learnrazorpages.com/razor-pages/routing和“友好路线”
使用此文件夹结构:
~Pages / (or "Areas" in last example)
External
PageA
Index.cshtml
Internal
PageB
Index.cshtml
然后我要添加这些路线
services.AddMvc()
.AddRazorPages(options =>
{
// Even though above guide states this route it...
// throws exception for "External/PageA" so I have to set "/External/PageA"
options.Conventions.AddPageRoute("External/PageA", "/A");
// throws exception for "External/PageB" so I have to set "/External/PageB"
options.Conventions.AddPageRoute("Internal/PageB", "/B");
});
但是我得到的只是404未找到。我尝试了多种组合。我什至遵循“区域”设置并将其移动到“区域”文件夹内具有相同结构的区域:
services.AddMvc()
.AddRazorPages(options =>
{
options.AllowAreas = true;
// Also tried "PageA" and "/PageA", "A" and "/A"
options.Conventions.AddAreaPageRoute("External", "/PageA", "/A");
// Also tried "PageB" and "/PageB", "B" and "/B"
options.Conventions.AddAreaPageRoute("Internal", "/PageB", "/B");
});
更像是整个约定设置都被完全忽略了,因为进度为0%。
访问页面的唯一方法是编写完整的文件夹名称。但我不要这个。我想要一种比文件夹结构更干净的路由结构,目前看来这是不可能的。
有什么建议-有什么想法吗?
答案 0 :(得分:0)
从您链接到的页面:
[AddPageRoute]方法采用两个参数。第一个是Razor页面文件的相对路径,不带扩展名
您正在提供包含页面的文件夹的路径。您需要在第一个参数的末尾添加“ / Index”:
options.Conventions.AddPageRoute("/External/PageA/Index", "A");
使用区域时也是如此。您需要提供实际页面的相对路径,而不是文件夹名称:
options.Conventions.AddAreaPageRoute("External", "/PageA/Index", "/A");
这采用以下结构:
Areas
External
Pages
PageA
Index.cshtml