c# - Razor Pages 路由仅使用一个参数,而不是两个
问题描述
我有一个显示杂货的 ASP.NET Core 3.1 Razor Pages 网站。有一个名为 Shop 的区域,其中包含一个名为 Product.cshtml 的 Razor 页面。此页面中没有任何路由设置,只是简单的@page
指令,没有其他内容。
页面中的OnGet
方法有几个参数,包括两个字符串参数namedcategory
和section
...
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§ion=Bread
一切正常。
我想做的是使用类似/Shop/Product/Bakery
and的 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
有人知道我在这里做错了什么吗?请让我知道是否还有其他需要包含的内容。
解决方案
推荐阅读
- kubernetes - Kubernetes Hazelcast 集群中的裂脑发现
- c++ - 从 C++ constexpr 函数调用 C 函数
- batch-file - 在 Apache Tomcat 日志中获取 catalina.out
- sql - SQL Server - 将多个值插入列
- php - XSym 符号链接不能在 PHP on Docker for Windows 中使用
- python - 如何更改标签、行编辑等相对于窗口大小的位置?
- java - 使用 Process builder 从 Java 进程调用的 Perl 脚本挂起(消耗错误,在单独的线程中输出流)
- javascript - 以编程方式浏览 JavaScript 中的嵌套对象
- angular - Angular 6:从组件传递数据并将对象推送到数组中
- c++ - 如何为 SFML 游戏创建 macOS .app 包?