如何使asp.net超链接停止编码网址? [英] how to make asp.net hyperlink to stop encoding the urls?

查看:69
本文介绍了如何使asp.net超链接停止编码网址?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 BulletedList DisplayMode =HyperLink

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

我使用以下代码将项目添加到列表中:
LevelsList.Items.Add(new ListItem(curSubPage.PageName,curSubPage.shortURL));

I add items to the list with this code: LevelsList.Items.Add(new ListItem(curSubPage.PageName, curSubPage.shortURL));

URL链接包含希伯来字符串并且它们被编码:

The URL links contain Hebrew strings and they get encoded:

asp.net生成的标记是这样的:

The markup the the asp.net generates is something like that:

<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>

虽然正确的标记应该是:

While the right markup should be:

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

如何解决?

推荐答案

从快速调查看,ASP.NET看起来像是用低级代码编码,所以没有直接的解决方案。

From quick investigation, looks like ASP.NET is encoding it in its "low level" code, so no direct solution.

您可以使用自定义中继器编写自己的项目符号列表:

You can simply write your own Bulleted List using custom Repeater:

<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>

并将其绑定在代码后面:

And to bind it in code behind:

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可让您点击它,但也会将该网址编码为其他内容。

Note that from what I've seen, IE8 still does not support non english URL address - the above link is not clickable in that browser, while Chrome let you click it, but encode the URL to something else as well.

这篇关于如何使asp.net超链接停止编码网址?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆