我有一个包含多个可扩展列表的页面。在完美的世界中,我想显示每个列表的链接,当单击其中一个时,它将重新加载页面并显示该特定列表。我读到 ViewState 可以消除隐藏输入字段、查询字符串等的需要,但我不熟悉这个概念。

基本上我需要完成两件事:

  1. 单击链接时将列表 ID 添加到 ViewState obj
  2. 加载页面时从 ViewState obj 读取 ID,显示该列表

任何人都可以为我提供有关此主题的一些资源和/或帮助吗?谢谢!

有帮助吗?

解决方案

ViewState 本质上是一个长编码隐藏字段,存储在页面顶部。它与常规隐藏字段之间的主要区别在于 ASP .NET 将对其进行解码并在回发时自动解析它。

有更好的方法来实现您想做的事情。

  • 您可以使用查询字符串。您传递的只是一个列表 ID。将列表 ID 附加到链接末尾,然后在 Page_Load 上查找它。如果找到适当的列表,请加载它。您需要处理未传递列表 ID 的情况。 查询字符串并不邪恶. 。它可以极大地帮助减少页面重量。当与像样的使用时 URL重写器, ,您可以很好地控制哪些内容可以通过(最重要的是,哪些内容不能通过)
  • 如果您使用 ASP .NET 控件(例如 Button 或 LinkBut​​ton)来触发列表的显示,则可以设置 CommandArgument 属性并在事件代码中选取该属性。然后,您可以将其作为参数传递给正在处理列表呈现的任何方法或控件。

其他提示

ViewState 用于在回发之间存储单个页面上的信息,而不是在页面之间传递参数。

您可以使用以下方法在页面之间传递参数:

  1. 会议
  2. 请求参数
  3. 饼干
  4. 自定义数据库
  5. 跨页面回发

这些方法都不会自动将数据添加到所请求页面的 ViewState 中。其中,我相信只有#2 适用于直接 HTML 链接 (GET),其余的通常涉及回发 (POST)。

你总是需要某种 ViewState 设置器(ViewState["Id"] = 源.Id)在请求的页面中。

如何:在 ASP.NET 网页之间传递值

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top