Razor Pages 路由只使用一个参数,而不是两个

阿夫罗霍姆·伊斯罗尔

我有一个显示杂货的 ASP.NET Core 3.1 Razor Pages 网站。有一个名为 Shop 的区域,其中包含一个名为 Product.cshtml 的 Razor 页面。这个页面没有设置任何路由,只是简单的@page指令,没有其他内容。

OnGet页面中方法有几个参数,包括两个名为categorysection...的字符串参数

public async Task<IActionResult> OnGet(string currentFilter,
                                       string section,
                                       string category,
                                       string searchAreaID,
                                       string so, int ps, int p = 1)

如果我浏览到/Shop/Product?category=Bakery/Shop/Product?category=Bakery&section=Bread一切正常。

我想要做的是使用像/Shop/Product/Bakery这样的 URL /Shop/Product/Bakery/Bread

我添加了Startup.cs如下路线...

.AddRazorPagesOptions(options => {
  options.Conventions.AddAreaPageRoute("Shop", "/Product", "/Shop/Product/{category}/{section}");
  options.Conventions.AddAreaPageRoute("Shop", "/Product", "/Shop/Product/{category}");
  // other routes set here (none relating to the above)
})

这允许我使用上面显示的 URL 进行浏览,但是当我使用标签助手生成链接时,URL 并不总是正确显示。例如,我有以下标记生成父/子<ul>s,这些标记用 CSS 标记(为清楚起见省略)...

<ul>
  @foreach (Category category in Model.Categories) {
    <li>
      <a asp-area="Shop"
         asp-page="/Product" 
         asp-route-category="@category.Name">@category.Name</a>
      <ul>
        <li>
          <ul>
            @foreach (Section sub in category.Sections) {
              <li><a asp-area="Shop"
                 asp-page="/Product"
                 asp-route-category="@category.Name" 
                 asp-route-section="@sub.Name">@sub.Name</a></li>
            }
          </ul>
        </li>
      </ul>
    </li>
  }
</ul>

顶级链接中的URL是正确的,形式/Shop/Product/Bakery/Shop/Product/Bakery?section=Bread

有人知道我在这里做错了什么吗?如果还有什么我需要包括的,请告诉我。

mj1313

您可以像这样设置页面路由:

.AddRazorPagesOptions(options => {
    options.Conventions.AddAreaPageRoute("Shop", "/Product", "/Shop/Product/{category?}/{section?}");
});

生成网址

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用AJAX删除Razor Pages

路由到 Razor Pages 中的属性

带有前缀 id 的 Razor Pages 路由

Razor Pages 自定义页面路由

Razor Pages AJAX网址ID参数

对Razor Pages使用非默认构造函数

使用 Razor Pages 在路线中间定义所需的路径参数?

创建一个空的 ASP.NET Core 2.0 Razor Pages 项目

Razor Pages Javascript Ajax 未将参数传递给 c#

使用Razor Pages时是否仍应使用控制器?

如何在 Razor Pages 中使用对象返回不同的视图?

无法在Razor Pages代码隐藏类中使用注入的类

如何使用 Razor Pages 在区域级别指定“授权”?

Razor Pages Post 返回 400

任何想法如何做一个更干净的方法来在Razor Pages中显示空检查?

有没有办法使用 Razor Pages 进行动态路由?

如何在Razor Pages中使用单独的BindProperty实现两种形式?

根据 Razor Pages 中的路由有条件地呈现 html

ASP .NET Core 2.1 Razor Pages锚标记帮助器为ASP路由生成空的href

在Blazor中,如何在Pages目录中检索所有可路由的Razor组件名称?

部署站点上的Razor Pages / ASP.NET CORE路由问题(404错误)

Razor Pages - 是否可以路由到视图组件以进行 AJAX 刷新

将数据从一个Razor页面传递到另一页面而不使用路由参数

Razor和Razor Pages有什么区别

为什么混合Razor Pages和VueJs是一件坏事?

使用实体框架和 MySql 在 Mac OS 上运行 Razor Pages Web App

如何使用C#在ASP.Net Razor Pages应用中选择单选按钮

为什么推荐使用Razor Pages在Asp.net Core中创建Web UI?

如何在Razor Pages Web应用程序中使用ViewModel