我在带有div
的asp.net母版页中有一个runat=server
。
当用户点击div
重定向到另一个页面时,我想要做的就是代码隐藏。我尝试了以下内容:
HTML:
<div id="logoHead" runat="server"></div>
代码背后:
logoHead.Attributes.Add("OnClick", "window.location = MyUrl");
这不起作用,我该怎么做?
答案 0 :(得分:2)
你正在做的事情会很好。你遇到的问题是'Attributes.Add'导致javascript被HTML编码。这是因为您没有使用ASP.NET特定控件。您的onclick
呈现为:
onclick="window.location='MyUrl'"
为了解决这个问题,我将任何我想要添加的javascript以这种方式添加到NON ASP.NET控件中,以消除任何将被HTML编码的有趣字符。例如:
使用Javascript:
function redirect(address) {
window.location = 'http://' + address;
}
ASPX:
<div id="divTesting" runat="server">
Testing
</div>
代码背后:
divTesting.Attributes.Add("onclick", "redirect('www.microsoft.com');");
这只是HTML控件的问题,您要添加runat='server'
标记来访问服务器端。如果您将div
切换为asp:Panel
,则Attribute.Add
上没有完成HTML编码,您可以在没有代理javascript功能的情况下放置任何内容。这是一种恼人的“特征”,但我怀疑它是有意的。