Как сделать гиперссылку asp.net, чтобы остановить кодирование URL? - PullRequest
0 голосов
/ 21 ноября 2010

У меня есть BulletedList с DisplayMode="HyperLink".

<asp:BulletedList runat="server" DisplayMode="HyperLink" ID="LevelsList"></asp:BulletedList>

Я добавляю элементы в список с этим кодом: LevelsList.Items.Add (new ListItem (curSubPage.PageName, curSubPage.shortURL));

Ссылки URL содержат строки на иврите, и они кодируются:

Разметка, создаваемая asp.net, выглядит примерно так:

<a href="%d7%91%d7%a0%d7%99%d7%99%d7%aa_%d7%90%d7%a4%d7%9c%d7%99%d7%a7%d7%a6%d7%99%d7%95%d7%aa_%d7%90%d7%99%d7%a0%d7%98%d7%a8%d7%a0%d7%98%d7%99%d7%95%d7%aa">בניית אפליקציות אינטרנטיות</a>

В то время какПравильная разметка должна быть:

<a href="בניית_אפליקציות_אינטרנטיות">בניית אפליקציות אינטרנטיות</a>

Как это исправить?

1 Ответ

0 голосов
/ 21 ноября 2010

По результатам быстрого исследования, похоже, что ASP.NET кодирует его в своем коде "низкого уровня", поэтому прямого решения нет.

Вы можете просто написать свой маркированный список, используя собственный репитер:

<asp:Repeater id="rptLevelsList" runat="server">
    <HeaderTemplate><ul></HeaderTemplate>
    <FooterTemplate></ul></FooterTemplate>
    <ItemTemplate>
        <li><a href="<%# DataBinder.Eval(Container.DataItem, "Value") %>"><%# DataBinder.Eval(Container.DataItem, "Text") %></a></li>
    </ItemTemplate>
</asp:Repeater>

И связать это в коде позади:

List<ListItem> links = new List<ListItem>();
links.Add(new ListItem("my page", "Somepage.aspx"));
links.Add(new ListItem("משהו בעברית", "http://www.כתובת_כלשהי_כאן.com"));
rptLevelsList.DataSource = links;
rptLevelsList.DataBind();

Обратите внимание, что из того, что я видел, IE8 по-прежнему не поддерживает неанглийский URL-адрес - вышеупомянутая ссылка не активируется в этом браузере, в то время как Chrome позволяет вам щелкать по ней, но кодирует URL-адрес и для чего-то еще. 1009 *

...