Html.ActionLink无法正确呈现#

时间:2008-11-26 02:32:42

标签: asp.net-mvc

当使用Html.ActionLink传递包含#cook的字符串时,它会像它一样呈现,但如果你将UrlEncode呈现为%2523。

我相信这是一个错误。 MVC Beta版。

这真的是个错误吗?

http://example.com/test#呈现为

http://example.com/test%2523而不是

http://example.com/test%2523

5 个答案:

答案 0 :(得分:3)

不是错误:)您不希望UrlEncode实际网址 - UrlEncode可帮助您在网址中编码可能与URI控制字符冲突的文本。同样,除非您想向用户显示HTML本身,否则您不会将实际的HTML传递给HtmlEncode。

答案 1 :(得分:1)

是的,运行以下控制台应用程序并查看输出内容:

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string hash = "#";
            Console.WriteLine(HttpUtility.UrlEncode(hash));
        }
    }
}

答案 2 :(得分:1)

好的,发现了问题...我正在使用MVC,如果我不使用UrlEncode,Html.ActionLink输出#,但如果我这样做,则输出%2523,即%23编码....

也许这是一个错误?

谢谢!

答案 3 :(得分:0)

HttpUtility.UrlEncode与Server.UrlEncode相同吗? (HttpContext.Current.Server.UrlEncode)

我现在无法检查,不能靠近.NET机器。

答案 4 :(得分:0)

你是否正在传递#作为ActionLink参数的一部分?如果是这样,你应该像这样追加它:Html.ActionLink(“test”)+“#”