不能对两个地址使用相同的剃须刀页面

Posted

技术标签:

【中文标题】不能对两个地址使用相同的剃须刀页面【英文标题】:Cannot use same razor page for two addresses 【发布时间】:2021-09-22 16:31:40 【问题描述】:

我如何在我的网络应用程序中的多个位置使用同一个剃须刀页面。

我有/one 页面,我还想通过/two/three 访问。

我可以用 AddPageRoute 做到这一点:

options.Conventions.AddPageRoute("/one", "two");
options.Conventions.AddPageRoute("/one", "three"); 

但页面中的 taghelper 总是呈现指向最后一条路线的 formaction="/three?handler=Update"/one/two/three 也是如此

这使得在我的 Web 应用程序的不同位置使用相同的剃须刀页面成为不可能。

Git 示例:https://github.com/enricoe73/OnePage2Routes.git

【问题讨论】:

【参考方案1】:

您可以使用您定义的任何路由访问页面,但框架中的出站 URL 生成组件(标签助手、IUrlHelper 等)将始终使用在生成出站 URL 时注册的最后一个路由,因此路由已注册。

如果这不适合您(例如,因为您可能希望在不同的时间指向不同的路线),解决方案是使用标准的 html formaction 属性而不是自定义的 asp-* 属性到标签助手:

<button formaction="/two?handler=update">Update</button>

【讨论】:

以上是关于不能对两个地址使用相同的剃须刀页面的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net 剃须刀页面和多选,在选择中发布所有项目

身份剃须刀页面中的 Blazor 组件

空白剃须刀页面,检查评论中是不是存在文章编号

剃须刀页面 asp-page 不呈现正确的 html

使用剃须刀页面调用服务器方法而无需重新加载页面

在带有隐藏 asp-for 输入的剃须刀页面中使用 foreach 会导致在浏览器控制台中找到具有非唯一 ID 的元素