我有一个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>
我该如何解决?
答案 0 :(得分:0)
通过快速调查,看起来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仍然不支持非英文网址 - 上述链接无法在该浏览器中点击,而Chrome允许您点击它,但也会将网址编码为其他内容。 / p>