我有一个显示杂货的 ASP.NET Core 3.1 Razor Pages 网站。有一个名为 Shop 的区域,其中包含一个名为 Product.cshtml 的 Razor 页面。这个页面没有设置任何路由,只是简单的@page
指令,没有其他内容。
OnGet
页面中的方法有几个参数,包括两个名为category
和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
和这样的 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
有人知道我在这里做错了什么吗?如果还有什么我需要包括的,请告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句