【问题标题】:How to hide HTML elements that share same CSS class from code behind?如何从后面的代码中隐藏共享相同 CSS 类的 HTML 元素?
【发布时间】:2014-05-21 11:36:59
【问题描述】:

我正在使用 ASP.NET MultiView 控件创建一个向导。 在每个视图中,我都有一个 HTML 表格行,其中包含向导的导航按钮(“上一个”、“下一个”、...)。

<tr class="rowNavButtons">.. Nav buttons go here ..</tr>

在我的向导的摘要视图中,我有一个“编辑”按钮,可以导航到特定视图。我想在编辑模式下隐藏

(包含导航按钮)。

问题是我的 MultiView 中有该导航行的多个实例,我无法为每个实例分配一个 ID。他们确实共享一个 CSS 类。

有没有办法访问所有共享同一个 CSS 类的 HTML 元素?是否有其他方法可以对 HTML 元素进行分组?

我已经看过here 描述的解决方案: 我不能使用 JavaScript 或 jQuery,并且 C# 解决方案正在生成“System.StackOverflowException”大声笑 此外,该线程已有 4 年历史,所以我希望可能有更新的解决方案 :)

谢谢!

【问题讨论】:

  • 其实这很容易做到,如果你只是为他们每个人分配一个id,但我想问你为什么不想使用javascript?
  • 是的,您所指的较新的解决方案是使用 jQuery :)
  • 您一次只能有 1 个视图处于活动状态(可见),对吗?因此,当您单击“编辑”时,您真的不需要隐藏所有,只需隐藏一个 - 在当前视图中?
  • @BlackBaron 是的,为每个人分配一个 ID 是一种选择,但我不想在我的代码后面列出所有单行并切换可见性。我宁愿只是循环(仅仅是因为,如果我添加更多视图 - 因此添加更多行 - 并且将不得不重新访问我的代码隐藏和那些)
  • @BlackBaron@Arman 大声笑是的,我猜 jQuery 是较新的解决方案。我宁愿不使用客户端解决方案的原因是它不会将其从 DOM 中删除,并且在它以 HTML 呈现后会发生“隐藏”。此外,该应用程序将由客户端使用使用 IE8(或者可能更旧?),我担心浏览器的不可预测行为.. 他们显然应该升级他们的浏览器,但这是另一个问题 :)

标签: c# html asp.net select hide


【解决方案1】:

赋予该行属性runat="server"

<tr runat="server" class="rowNavButtons">.. Nav buttons go here ..</tr>

然后您可以在服务器端访问它。例如,假设这是视图中唯一的一行,并且您需要在 MultiView 的活动视图中找到它 - 您可以执行以下操作:

HtmlTableRow tr = MultiView1.GetActiveView().Controls.OfType<HtmlTableRow>.Single();
tr.Visible = false;

但坦率地说 - 这是一个 hack。在客户端执行此操作。如果你不能使用 jQuery - 用普通的 JS 来做,它不会更复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2013-03-18
    • 1970-01-01
    • 2020-05-21
    • 2021-03-26
    相关资源
    最近更新 更多