【问题标题】:Passing value from one page to another using master pages使用母版页将值从一个页面传递到另一个页面
【发布时间】:2009-11-28 09:46:00
【问题描述】:

我的问题是我想传递一个标签和隐藏控件的值,它们位于 page1.aspx 中的数据列表中,我想在 page2.aspx 中访问这些值。单击提交按钮时,如何将值获取到另一个页面。在不使用会话、server.transfer、request.querystrings 等的情况下,我们有什么更好的选择吗?请。帮助。我正在使用母版页。我们可以使用上一页吗?如果是这样的话。建议我更好的解决方案。提前致谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    是的,您可以使用PreviousPage,通过跨页面发布。

    首先,将第一页上<asp:Button> 控件的PostBackUrl 属性分配给第二页。

    接下来,在第二页设置PreviousPage指令:

    <%@ PreviousPageType VirtualPath="~/first.aspx" %>
    

    当第二页收到回发时,从第一页获取你需要的数据:

    Page previous = Page.PreviousPage;
    if (previous != null)
    {
        Label label = (Label)previous.FindControl("myLabel");
        if (label != null)
        {
            string text = label.Text;
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用隐藏的输入元素,那么它的值将通过Request.Form 获得,例如

      Page1.aspx 中的 HTML

      <input type="hidden" name="country" value="Norway" />
      

      Page2.aspx 中的 C#

      var country = Request.Form["country"];  // "Norway"
      

      【讨论】:

      • 在问题中指出数据包含在隐藏的控件/标签中
      【解决方案3】:

      您当然已经消除了很多在页面之间持久化数据的常用方法。除了 queryString 参数之外,还有隐藏的表单值(Adam 的示例)和 cookie,它们也可以从 Request 对象访问。如果数据相对较小且不是特别敏感,您可以将其写入用户机器上的 cookie。

      或者,您需要某种持久性机制来保存数据。您可以将信息写入 Web 服务器上的文件。明显的缺点是您需要有更复杂的逻辑来确保每个用户的数据保持独立,您基本上需要创建自己的会话管理逻辑。

      想到的另一个选择是将信息持久化到数据库中。除非您需要存储和管理一大堆复杂数据,否则在大多数情况下这确实不是一个可行的选择。它还带有与文件存储机制相同的大部分缺陷。

      【讨论】:

        【解决方案4】:

        除非性能是一个真正的问题,否则请使用 Session。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-14
          • 1970-01-01
          • 2016-06-18
          • 1970-01-01
          相关资源
          最近更新 更多