Html.ActionLink неправильно отображает # - PullRequest
1 голос
/ 26 ноября 2008

При использовании Html.ActionLink передача строки, содержащей # char, отрисовывает ее так, как она есть, но если вы используете UrlEncode, она отрисовывается как% 2523.

Я считаю, что это ошибка. Бета-версия MVC.

Это действительно ошибка?

http://example.com/test# отображается как

http://example.com/test%2523 вместо

http://example.com/test%2523

Ответы [ 5 ]

3 голосов
/ 06 февраля 2009

Не ошибка :) Вы не хотите, чтобы UrlEncode действовал по URL - UrlEncode помогает вам кодировать текст в URL, которые могут конфликтовать с управляющими символами URI. Точно так же вы не передадите фактический HTML-код в HtmlEncode, если не захотите показать своим пользователям сам HTML-код.

1 голос
/ 26 ноября 2008

Да, запустите следующее консольное приложение и посмотрите, что оно выводит:

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));
        }
    }
}
1 голос
/ 26 ноября 2008

хорошо, обнаружил проблему ... Я использую MVC, и вывод Html.ActionLink # если я не использую UrlEncode, но если я это сделаю, он выводит% 2523, который закодирован% 23 ....

может быть, это ошибка?

спасибо!

0 голосов
/ 30 января 2009

Вы передаете # как часть параметров ActionLink? Если это так, вы должны просто добавить это так: Html.ActionLink ("test") + "#"

0 голосов
/ 26 ноября 2008

HttpUtility.UrlEncode совпадает с Server.UrlEncode? (HttpContext.Current.Server.UrlEncode)

Я не могу сделать проверку сейчас, не возле машины .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...