2010-11-21 25 views
0

BulletedListにはDisplayMode="HyperLink"があります。URLのエンコードを停止するasp.netハイパーリンクを作成する方法は?

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

私はこのコードをリストに項目を追加します。 LevelsList.Items.Add(新しいのListItem(curSubPage.PageName、curSubPage.shortURL));

URLリンクは、ヘブライ語の文字列を含むと、彼らは、エンコードされます:右のマークアップがされるべきである

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

:asp.netが発生

マークアップは、そのようなものです

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

どうすれば修正できますか?

+0

Googleはこれらの2つのURLを異なるページとみなしているようです。つまり、ダブルコンテンツを意味します。 – IgalSt

+0

多分あなたasp.netプログラムの文化情報をチェックできますか? – xandy

答えて

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> 

そして、背後にあるコードでそれをバインドする:

あなたは、単にあなた自身の箇条書き使用してカスタム・リピータを書くことができ、私が見たものから、IE8はまだないこと

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(); 

注意を英語以外のURLアドレスはサポートしていません。上記のリンクはそのブラウザではクリックできませんが、Chromeではクリックできますが、URLは他のものにもエンコードされます。

+0

答えをありがとう。これらのリンクはIE7と8でクリック可能です。エンコードされていない場合 – IgalSt

関連する問題