我的网站表单上有几个折叠块。我正在使用Bootstrap来折叠它们,如下所示:
<div class="span<%# CurrentBlock.Span > 0 ? CurrentBlock.Span.ToString() : "12" %> info-link-header info-link-header-title expandable-link-heading" data-toggle="collapse" data-target="#<%# ContentId %>" style="position: relative;">
<!--some content-->
<div class="expandable-container collapse" id="<%# ContentId %>"><!--some more content--></div>
以下是此文件的代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
//some other code
}
由于调用了DataBind(),我假设&lt;%#ContentId%&gt;代码块应该得到正确的值。 我遇到的问题是,当我单击要扩展的div时,class属性无法生成“崩溃” - 只显示“崩溃”,所以当我在Chrome Dev工具中检查它时,我的内容会被渲染,但它不可见。在Chrome Dev工具中添加“崩溃”解决了这个问题,但当然我需要自动执行此操作。更令人困惑的是,当我在本地构建时,我的块每次都会正确扩展/折叠; “崩溃”会在需要时添加,并在应该恢复时“崩溃”。当我发布到我们的开发服务器时,随后“崩溃”无法生成。 我怎样才能解决这个问题?谢谢!
答案 0 :(得分:0)
我刚回答了这个问题。这背后的问题是我的包含data-target属性的div使用C#属性来获取唯一的ID值。此值是通过在DateTime.Now上生成毫秒并使用它作为折叠div上的id属性的值以及顶部div上的data-target的值来创建的。在比我自己更快的机器上,比如开发服务器,我假设代码运行得足够快,在页面上的2或3个div上获得相同的毫秒值,这在id属性中创建了相同的值。 Id属性中的相同值打破了DOM,并隐藏了我的内容。
解决方案:我创建了一个GUID对象来填充&#39; ContentId&#39; property,为id属性创建唯一值并保持DOM完整。