2010-11-21 16 views
0

我有BulletedListDisplayMode="HyperLink"如何讓asp.net超鏈接停止對url的編碼?

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

我將項目添加到列表中使用此代碼: LevelsList.Items.Add(新列表項(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

谷歌似乎將這兩個網址視爲不同的網頁,這意味着雙倍的內容.. – IgalSt 2010-11-21 10:21:45

+0

也許你可以檢查你的asp.net程序的文化信息? – xandy 2010-11-21 10:25:41

回答

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則允許您點擊該地址,但也會將網址編碼爲其他內容。

+0

感謝您的回答。這些鏈接在IE7和8中也可以點擊,而且它們也沒有編碼 – IgalSt 2010-11-21 12:10:57