2011-05-24 5 views
1

runat=serverのasp.netマスターページにdivがあります。div asp.netでコードのリダイレクトとバックグラウンドイメージを追加する

私がしたいことは、ユーザがdivをクリックして別のページにリダイレクトしたときのコードビハインドからです。私が試した次

HTML:背後

<div id="logoHead" runat="server"></div> 

コード:

logoHead.Attributes.Add("OnClick", "window.location = MyUrl"); 

このdoesntの仕事、私はこれをどのように行うことができますか?

+0

これをチェックしたいことがあります[他の回答](http://stackoverflow.com/questions/5463519/how-can-i-add-a-click-event-to-my-div-from-code-behind/5463537#5463537)を参照してください。 (それがうまくいかない場合は、他の何かが間違っていて、関連コードを投稿したいかもしれません)。 –

答えて

2

あなたがやっていることはうまくいくはずです。あなたが持っている問題は、 'Attributes.Add'がjavascriptにHTMLエンコードをさせることです。これは、ASP.NET固有のコントロールを使用していないためです。あなたのonclickはとしてレンダリングされます。これを回避するには

onclick="window.location=&#39;MyUrl&#39;" 

私はHTMLになります任意の変な文字を排除するための機能で、私はこのようにNON ASP.NETコントロールに、追加したい任意のJavaScriptを配置コード化される。例:

Javascriptを:

function redirect(address) { 
    window.location = 'http://' + address; 
} 

ASPX:背後

<div id="divTesting" runat="server"> 
    Testing 
</div> 

コード:

divTesting.Attributes.Add("onclick", "redirect('www.microsoft.com');"); 

これは、あなたがrunat='server'タグを追加するHTMLコントロールの唯一の問題ですそれらのサーバー側にアクセスします。 divasp:Panelに切り替えると、Attribute.AddにHTMLエンコードが行われず、プロキシのJavaScript機能を使用せずに、そこに必要なものを置くことができます。これは一種の厄介な「機能」ですが、意図されていると思われます。

関連する問題