【问题标题】:Displaying .Net Page within Page在页面内显示 .Net 页面
【发布时间】:2010-07-29 13:38:41
【问题描述】:

所以我创建了一个 .Net 网站,其中一部分是可以过滤、查询和显示数据库表的页面。然后我允许用户选择一个单独的行来编辑或删除。这两个功能都在各自的单独页面上执行。最近我被要求在第一页添加功能,以允许在访问之间保留查询过滤。例如,如果用户编辑了一行然后返回到表格,他们选择的过滤器应该仍然存在。

我的问题是最简单的方法是什么。问题是许多过滤器是基于数据库中的另一个表动态生成的,因此它们不是静态编码到页面中的。一种选择是在查询字符串中传递过滤器字符串,但这似乎不切实际,因为它可能很长。我也想过打开一个新窗口,但担心安全性和数据重复。我还可以使用 iframe 加载页面并隐藏原始内容,直到完成编辑,但我不确定如何从周围页面的 iframe 中访问点击,或者这是否是个好主意。

任何帮助/建议将不胜感激。

谢谢!

【问题讨论】:

  • 您可以使用会话来存储他们最近的过滤器..

标签: asp.net database iframe filtering


【解决方案1】:

您可以将您的功能封装到两个页面都可以使用的User Control

How to: Convert Web Forms Pages into ASP.NET User Controls

【讨论】:

  • +1。这个问题听起来不像是另一个页面的案例,而只是另一个页面的控件+逻辑的封装。
  • 当您说创建用户控件时,您指的是什么功能?查询过滤只在原始页面上进行。
  • 我是说有一个页面可以进行查询过滤,并将其他页面逻辑包含在用户控件中。
【解决方案2】:

您可以使用 SESSION 变量来存储 Dictionary<string, object> 或类似的东西,其中包含标识每个表的键和表示过滤器的值。实际的过滤选项不应该为给定会话存储太多信息。

在不知道您的应用程序如何捕获过滤器概念的情况下,提供完全合格的解决方案有点困难,但会话似乎是一个不错的选择。

【讨论】:

  • 在页面上,过滤器是一个下拉列表,但它基本上是一种写​​出将出现在 WHERE 子句中的 SQL 的方法。每个过滤器的 id 是 SQL 列的 id,而 ListItems 的值是可能的列值。它们都是字符串或整数。如果我按照您所说的做,并在会话中为每个表格页面存储一个 Dictionary 对象,这会很昂贵吗?除非他们是管理员,否则我真的没有看到给定用户访问超过一两个独特的表格页面,因为每个用户只会关心他们自己的组
  • 这对我来说似乎可行。在会话中存储这种数据的内存成本应该不高。这实际上取决于您要如何序列化过滤器值。也许如果您定义了一个封装不同过滤选项的“TableFilter”类,那么您可以序列化 Dictionary.
【解决方案3】:

您可以将过滤器保存在用户端的 cookie 中。授予不是一个完美的解决方案,但这是一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多