带有友好路由的Razor页面路由未响应

时间:2018-10-17 08:46:04

标签: razor routing razor-pages

遵循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%。

访问页面的唯一方法是编写完整的文件夹名称。但我不要这个。我想要一种比文件夹结构更干净的路由结构,目前看来这是不可能的。

有什么建议-有什么想法吗?

1 个答案:

答案 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