【发布时间】:2010-12-14 09:57:59
【问题描述】:
我将从后端的 div 容器控制样式(c#,代码隐藏)。
我不会使用 runat="server"-tag,因为 div-id 在 javaScript 中使用的比较多。
怎么办?
【问题讨论】:
标签: asp.net
我将从后端的 div 容器控制样式(c#,代码隐藏)。
我不会使用 runat="server"-tag,因为 div-id 在 javaScript 中使用的比较多。
怎么办?
【问题讨论】:
标签: asp.net
如果您按照他的说法使用 .Net 4.0,我会按照 RPM1984 的建议使用 ClientIdMode="Static"。但是,如果这不是一个选项,只需将您的 div 包装在一个没有 runat="server" 的 div 中,例如:
<div id="wrapperDiv">
<div id="innerDiv" runat="server">additional stuff</div>
</div>
这应该可行,并且在 jQuery 中使用外部 div 的 id 访问内部 div 会相当简单:
$(document).ready(function() {
$('#wrapperDiv > div').css('display', 'none');
});
【讨论】:
假设你有一个 div,你想在后面的代码和 jQuery 中使用它。
<div id="myDiv" runat="server"></div>
我们都知道,当您查看页面的源代码时,id 会被 asp.net 更改。因此,要使用 jQuery 访问它,请执行以下操作:
$("#<%=myDiv.ClientID %>")
【讨论】:
# - 这是用于数据绑定。
如果您想从后面的代码中访问它,您必须将其设为 runat=server - 就这么简单。
如果它在 JavaScript 中“被大量使用” - 在文本控件中设置 ClientId,然后通过 JavaScript 以这种方式访问它。
或者,如果您使用 .NET 4,请设置 ClientIdMode="Static"。
编辑
以下是如何使用文字控件来保持客户端 ID(以便您可以在 JavaScript 中使用它):
ASPX:
<asp:Literal id="DivClientId" runat="server"/>
ASPX.CS:
DivClentId.Text = string.Format("<script type=\"text/javascript\">var divId = {0};</script>", ServerSideDiv.ClientId);
JavaScript:
var div = document.getElementById(divId);
【讨论】:
在 .net 4.0 中,只需使用面板控件(呈现为 div)并将 ClientIDMode 设置为静态。因此,您可以在服务器端设置样式,并且仍然可以轻松地在 JS 代码中访问它。
【讨论】: