gpt4 book ai didi

c# - 让 ASP.NET MVC 正确转义路由中的#(井号/井号)字符

转载 作者:太空狗 更新时间:2023-10-29 21:59:42 26 4
gpt4 key购买 nike

我有一条看起来像这样的路线:

routes.MapRoute(
"BlogTags",
"Blog/Tags/{tag}",
new { controller = "Blog", action = "BrowseTag", viewRss = false }
);

然后我使用该路由创建一个 URL,如下所示:

<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag), 
new { action = "BrowseTag", tag = sortedTags[i].Tag })%>

但是,当使用带有 # 字符(如“C#”)的标记时,路由引擎不会对其进行转义,因此我得到如下所示的 URL:

<a href="/Blog/Tags/C#">C#</a>

我需要的是 # 转义,这样它看起来像这样:

<a href="/Blog/Tags/C%23">C#</a>

我尝试在标签进入路由之前对其进行 Url.Encode,如下所示:

<%= Html.RouteLink(Html.Encode(sortedTags[i].Tag), 
new { action = "BrowseTag", tag = Url.Encode(sortedTags[i].Tag) })%>

但这会使路由引擎双重转义 #(这会导致 ASP.NET 崩溃并出现错误的请求错误)):

<a href="/Blog/Tags/C%2523">C#</a>

如何让路由引擎为我正确转义 # 字符?

提前感谢您的帮助。

最佳答案

作为一个非常秃头的解决方案,我会在 RouteLink 的输出中手动将“#”替换为“%23”。如果您不在网址中使用片段,它应该可以工作。

您可以使用正则表达式仅将替换应用于 url 的最后部分。

关于c# - 让 ASP.NET MVC 正确转义路由中的#(井号/井号)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2201898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com