代码之家  ›  专栏  ›  技术社区  ›  iamserious

根据C中的查询字符串切换DIV可见性的最佳方法

  •  1
  • iamserious  · 技术社区  · 15 年前

    我在ASPX页面上有大约20个分区。在任何时候,它们中只有一个是可见的。我需要根据查询字符串决定显示哪个DIV。

    http://...?mode=<ModeName>
    

    简单的方法是从所有DIV的不可见部分开始,然后将查询字符串放入开关中,并为所有可能的模式名编写案例(或者将其放入大型if-else结构中)。

    我不喜欢硬编码,因为如果以后我添加/删除任何DIV,我需要“记住”在切换DIV的地方做必要的更改。

    我正在考虑创建一个具有所有名称的枚举,并将该枚举传递给函数,这样我就可以遍历所有枚举并相应地设置可见性。这样,我只需要在顶部枚举声明中添加DIV名称。但事情并没有那么顺利(可能是我太刻薄了,没法让它发挥作用)

    开关是我唯一的出路吗?有人有更好的方法吗? 事先谢谢!

    2 回复  |  直到 15 年前
        1
  •  0
  •   KeithS    15 年前

    我将执行以下部分或全部操作:

    • 在枚举中定义窗口的各种模式( public enum ModeNames {View, Edit, Create, Summary ...} )将此枚举设为一般性但具有描述性。
    • 公开将查询字符串解析为枚举值的属性DisplayMode。您应该控制添加到query string中的modenames,但是由于它是查询字符串,因此客户机可以键入他们喜欢的任何内容,所以我会进行一些错误检查,如果querystring不是预期值之一,则会显示“默认”视图模式。
    • 给div一个runat=server和一个id属性(我猜你已经有了,因为你想用c而不是javascript来做这件事),在你的页面预呈现处理程序中,把每个div的visible属性(被它的id作为对象引用)设置为一个表达式来评估当前的displaymode是该DIV应该可见的模式之一(例如 thisDiv.Visible = new[]{ModeNames.Create, ModeNames.Edit}.Contains(DisplayMode) )。
    • 或者,您也可以在标记中执行此操作,方法是使用类似的内联表达式Evaluating DisplayMode来指定DIV的Visible属性(作为服务器端对象),或者包括DIV的OnLoad javascript处理程序(该处理程序不再是服务器)。-side)基于相同的内联C表达式,使用DOM设置可见性。
        2
  •  0
  •   Ramon Araujo    15 年前

    我建议在querystring传递的数据和要处理的div的名称(和id)之间设置一个关系。

    剩下的你应该知道,使用一个脚本管理器来执行javascript代码来隐藏/显示适当的div,这取决于你从querystring中读取的内容。

    希望有帮助,