3

你能在后面的页面代码中得到 PostBackUrl 的动作吗?

我想调用一个 onclick 函数来执行一些数据库更新,然后将值作为隐藏字段回发到不同的 URL。

4

4 回答 4

3

我会使用 server.Transfer 但是,隐藏字段是非常不安全的。所以在它的位置(并且因为您已经在使用 server.transfer)为什么不使用 Context.Items?您可以通过它传输整个对象。例如:这是在原始页面上 -

Context.Items.Add("Contact", contactID)
        Server.Transfer("~/ViewContact.aspx")

在结果页面上你做 -

Dim contactID = Context.Items.Item("Contact").ToString()

使用 server.transfer 时必须非常小心,因为传输发生在服务器中,并且永远不会通知浏览器该页面与其请求的页面不同。如果您没有预料到,当您尝试回发时,这可能会给您带来麻烦。

实际上,我刚刚写了一篇关于这件事的博客……

Server.Transfer 示例

于 2011-06-30T14:29:15.603 回答
2

您创建一个简单的白页,其中包含您想要回发的所有输入,在表单内,并使用您回发的 javascript。

问题是当用户没有启用 javascript 时,在这种情况下,在这个白色的简单页面中,您包含一条消息,告诉用户该页面会在几秒钟内自动重定向到另一个页面,或者单击此处立即重定向.

这个简单的白页,只是点击后对普通页面的覆盖。

您还可以阅读这篇文章,这是一个类似的技巧,可以通过源代码和示例将表单数据发布到另一个 URL 。

并且还有许多其他方式可以在 asp.net 网页之间传递值

这通常是当您有一个支付网关提供商,并且您从您的页面中获胜以转移到该网关时 - 例如贝宝。另一种解决方案也是,有一个页面,其中包含您想要发送到下一页的摘要,并且在该页面中您包含所有数据,以及摘要和返回网关的正常帖子。

单击按钮时,我需要运行一个函数(在代码后面)。完成该功能后,我希望后面的代码发布到具有隐藏字段值的不同页面

当您的功能完成后,您不能将帖子移回另一页。您可以做的是向您的页面呈现一个简单的表单,其中您的数据作为您需要发送到其他页面的隐藏输入,并自动发布您已呈现的这个新表单。

例子

protected void Button1_Click(object sender, EventArgs e)
{
   // ...you calculations here...

    StringBuilder sbRenderOnMe = new StringBuilder();

    // the form and the data
    sbRenderOnMe.AppendFormat(
    "<html><body><form action=\"http://www.google.com\" method=\"post\" name=\"form1\">"
         + "<input value=\"{0}\" id=\"lst-Send1\" name=\"Send1\" type=\"hidden\" />"
         + "<input type=\"submit\" name=\"Button1\" value=\"press me if not automatically redirect\" id=\"Button1\" />"
     + "</form>"
     , 1100
    );

    // the auto submit
    sbRenderOnMe.AppendFormat("<script>document.form1.submit();</script>");       
    sbRenderOnMe.AppendFormat("</body></html>");

    Response.Write(sbRenderOnMe.ToString());
    Response.End();
}

唯一一个有小闪烁并且在没有javascript的情况下无法自动工作的减号,需要告诉用户按下按钮。

于 2011-06-30T13:32:54.210 回答
0

完成原始代码隐藏事件后,您可以使用Server.Transfer并保留表单和查询字符串变量。

Server.Transfer("OtherPage.aspx", true);
于 2011-06-30T13:38:48.330 回答
0

我遇到过这个解决方案

<asp:LinkButton ID="CartOrderButton" runat="server" PostBackUrl="order.aspx" onclick="CartOrderButton_Click">Order Me</asp:LinkButton>
于 2011-07-05T09:38:24.717 回答