Anchor text 或者 , \", ', =")-6ren">
gpt4 book ai didi

asp.net - 如何正确编码 anchor hrefs

转载 作者:行者123 更新时间:2023-12-01 04:19:53 25 4
gpt4 key购买 nike

在 XHTML/Strict 文档中对 anchor 标记中的 URL 进行编码的正确方法是什么:

<a href="http://www.sit.com/page/<%= HttpUtility.UrlEncode("String that might contain unicode and dangerous characters like +, /, \\, <, >, \", ', =") %>">
Anchor text
</a>

或者
<a href="http://www.site.com/page/<%= HttpUtility.HtmlEncode("String that might contain unicode and dangerous characters like +, /, \\, <, >, \", ', =") %>">
Anchor text
</a>

或者
<a href="http://www.site.com/page/<%= CustomEncode("String that might contain unicode and dangerous characters like +, /, \\, <, >, \", ', =") %>">
Anchor text
</a>

哪里 CustomEncode是要定义的。

我已将问题标记为 asp.net-mvc因为我提出了以下问题。假设我尝试过的模板生成的默认路由:
<%= Html.RouteLink("action text", new { id ="a/b" }) %>
<%= Html.RouteLink("action text", new { id = Html.Encode("a/b") }) %>

两者都呈现为
<a href="/Home/Index/a/b">action text</a>

尽管
<%= Html.RouteLink("action text", new { id = Url.Encode("a/b") }) %> 

呈现为
<a href="/Home/Index/a%252fb">action text</a>

起初对我来说似乎是正确的,但是当我点击链接时,我收到错误 400 Bad Request。

我把它放在同一页面上来测试 id 参数是否正确传递:
<% if (ViewContext.RouteData.Values.ContainsKey("id")) { %>
<div><%= Html.Encode(ViewContext.RouteData.Values["id"]) %></div>
<% } %>

答案也可能是为了 SEO 目的而简单地在 url 中避免这些字符。如果是这种情况,我会简单地避免使用它们,但我只是好奇 CMS 和博客如何处理这个问题。

例如在 SO 问题标题上,例如 a/b将呈现为 a-b在 anchor href 中,所以我想这里有一些自定义的事情,我正在寻找最佳实践。

最佳答案

我做 this way ,取自 Jeff Atwood 用于 Stack Overflow 的东西。

关于asp.net - 如何正确编码 anchor hrefs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320740/

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