使用 Bootstrap 时,为什么我的某些元素随机不折叠?

When using Bootstrap, why are some of my elements randomly not collapsing?

我的网络表单站点上有几个折叠块。我正在使用 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(),我假设 <%# ContentId %> 代码块应该获得正确的值。 我遇到的问题是,当我单击 div 我想展开时,class 属性无法生成 "collapse in" - 它只显示 "collapse" 等我的内容当我在 Chrome 开发工具中检查它时呈现,但它不可见。在 Chrome 开发工具中添加 "collapse in" 可以解决问题,但我当然需要它自动发生。更令人困惑的是,当我在本地构建它时,我的块 expand/collapse 每次都正确; "collapse in" 在需要时添加,在需要时恢复为 "collapse"。当我发布到我们的开发服务器时,"collapse in" 随机生成失败。 我怎样才能解决这个问题?谢谢!

我刚刚回答了这个问题。这背后的问题是我的 div 包含数据目标属性正在使用 C# 属性 来获取唯一的 ID 值。该值是通过在 DateTime.Now 上生成毫秒并将其用作折叠 div 上的 id 属性值和顶部 div 上的数据目标值来创建的。在比我自己的机器更快的机器上,比如开发服务器,我假设代码 运行 足够快,可以在页面上的 2 或 3 divs 上获得相同的毫秒值,这在 id 中创建了相同的值属性。 Id 属性中的相同值破坏了 DOM,并隐藏了我的内容。

解决方案:我创建了一个 GUID 对象来填充 'ContentId' 属性,它为 id 属性创建了唯一值并保持 DOM 不变。