首页 > 解决方案 > 不能对两个地址使用相同的剃须刀页面

问题描述

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

我有页面/one,我也想用/two和访问/three

我可以用 AddPageRoute 做到这一点:

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

但是页面中的 taghelpers 总是渲染formaction="/three?handler=Update"指向最后一个路由,对于/one,/two/three

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

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

标签: asp.net-corerazorrazor-pages

解决方案


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

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

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


推荐阅读