我在ASP.NET Core v2.0中使用RazorPages,我想知道是否有人知道如何强制 AnchorTagHelper
使用小写?
例如,在我的 .cshtml
标记中,我将使用 asp-page
标记帮助程序获得以下锚标记:
<a asp-page="/contact-us">Contact Us</a>
我正在寻找的输出
// i want this
<a href="/contact-us">Contact Us</a>
// i get this
<a href="/Contact-us">Contact Us</a>
为了更好地说明为什么这对我的网络应用程序很重要,请想象一下你会在stackoverflow.com上看到的长网址 .
https://stackoverflow.com/questions/anchortaghelper-asp-page-to-use-lowercase
-- VS --
https://stackoverflow.com/Questions/Anchortaghelper-asp-page-to-use-lowercase
任何帮助,将不胜感激!
我看过这些其他参考文献,但没有运气:
4 回答
将生成目标链接的url帮助程序将使用为路由生成的元数据 . 对于剃刀页面,它使用确切的文件路径来标识路由 .
从ASP.NET Core 2.1开始,您可能能够使用
Route
属性调整路径,就像MVC路由一样 . 至少it’s planned for the 2.1 release .在此之前,您必须在
ConfigureServices
方法中为您的页面配置特定路线:这将使现有路由可供使用,因此如果您不想这样,则需要替换此页面的路由选择器 . 没有内置的方法可以做到这一点,但是当你知道该怎么做时,这并不难 .
为了避免代码重复并使一切更好,我们只需创建一个
ReplacePageRoute
扩展方法,它基本上匹配上面AddPageRoute
的用法:该方法的实现直接受到AddPageRoute的启发:
将以下内容添加到
Startup.cs
中的ConfigureServices
方法中 . 它可以在services.AddMvc();
之前或之后添加现在为锚标签
和输出
现在它更容易一些,只需将它添加到Startup.cs中的ConfigureServices方法即可 .
我通过一些反复试验找到了如何做到这一点 .
例如:
所以为了解决我的问题,我刚刚将其重命名为我想要的
不幸的是,我找不到任何有关此行为的支持文档
我宁愿选择一种编程方法 . 然而,我可以想象的唯一替代解决方案涉及覆盖或创建自定义标记帮助程序,这对于这样一个小问题似乎有点矫枉过正 .