【问题标题】:Which page gets the postback with Server.Transfer?哪个页面通过 Server.Transfer 获得回发?
【发布时间】:2010-02-10 14:31:59
【问题描述】:

我有一个动态呈现数据输入表单的简单表单,用户进行回发并将结果保存到数据库中。我创建了一个新版本的表单,并根据数据库上的一些信息,当用户请求旧表单的 URL 时,我想做一个 Server.Transfer 到新的 *.aspx 页面以生成页面和处理回发。由于页面的 URL 不会改变,这是否意味着回发被发送到原始页面?然后我是否需要检查它是否是回发,如果是,则调用 Server.Transfer 并允许将表单数据传输到新页面?

【问题讨论】:

    标签: asp.net server.transfer


    【解决方案1】:

    这取决于“获取”回发的含义。当然,第一页将获得发布的表单值,因为它们是从客户端发送的。但是,第一页对回发信息做出反应的程度取决于您在生命周期中何时启动 Server.Transfer。如果它在生命周期中非常晚(如点击处理程序),那么第一页将几乎经历了整个回发过程。

    Server.Transfer 中的optional parameter to preserve form values 指示第二个页面是否也像回发一样响应请求。

    【讨论】:

    • 我正在对 Page.Load 中的 Get 请求执行 Server.Transfer。因此,对于 get 请求,Transfer 已经完成了一次,这对我来说是个困惑点。在客户端收到响应(由 Server.Transfer 生成),然后执行 Postback 后,我是否需要原始页面中的逻辑来实质上重做 Server.Transfer。
    • 当我说得到回发时,我的意思是当回发发生时,哪个页面接收到请求:URL中的那个,或者在原始获取请求期间通过Server.Transfer传输的那个.
    • @aaronls 从客户端的角度来看,只有第一页接收到请求。从各个页面的角度来看,它们都收到了一个恰好是同一个请求。
    【解决方案2】:

    看一下Server.Transfer 之后页面的HTML 源代码。如果表单的操作是新的 ASPX,那么你就可以了。

    使用常规重定向可能会更容易。这样你就没有这些问题了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 2023-04-05
      • 2021-09-05
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多