我想从标记名称生成URL。 Stackoverflow如何在URL中转义标记名称
在我看来(asp.net的MVC),我有以下几点:
<%= Html.ActionLink(Html.Encode(tagName),
"tagged" //action,
"posts" //controller,
new {tagName=Html.UrlEncode(tagName)} //querystring argument,
new {@class="tag"} //html attributes)
%>
但如果标记名是 “c#”(不带引号),这会产生以下网址:
http://localhost/posts/tagged/c%2523
导致HTTP 400错误 - 错误的请求
在计算器上,对于相同的 “C#” 标签中的URL生成 “C%23”,而不是 “C%2523”
我试过Html.UrlEncode,Uri.EscapeDataString,Uri.EscapeUrlString,但没有一个产生所需的“c%23”格式。
那么我应该如何编码锚的tagName?
如果我完全不转义它,它会输出c#未转义,并且哈希变成url片段 – gCoder 2009-03-07 12:53:43
第一个Html.Encode用于链接文本,因此它与锚的href部分无关 – gCoder 2009-03-07 12:57:03