动作PostBackUrl以编程方式使用C#

时间:2011-06-30 13:27:00

标签: c# asp.net postbackurl

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

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

4 个答案:

答案 0 :(得分: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 example

答案 1 :(得分:2)

您可以创建一个简单的白页,其中包含您希望在表单内发回的所有输入,以及您发回的javascript。

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

这个简单的白页只是在点击后覆盖正常页面。

你也可以阅读这篇文章,这篇文章与post form data to another URL类似,有源代码和示例。

还有许多其他方式pass values between asp.net web pages

通常情况下,如果您拥有支付网关提供商,并且您从页面中获胜以转移到该网关 - 例如,PayPal。另一个解决方案是,有一个页面,其中包含您要发送到下一页的内容的摘要,并且在该页面中,您已包含所有数据,以及摘要和正常回发到网关的帖子。

  

我需要运行一个函数(在代码中   当点击一个按钮时。一旦   那个功能完成了我想要的   后面的代码发布到另一个   隐藏字段值的页面

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

实施例

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,需要并告诉用户按下按钮。

答案 2 :(得分:0)

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

Server.Transfer("OtherPage.aspx", true);

答案 3 :(得分:0)

我遇到过这个解决方案

<asp:LinkButton ID="CartOrderButton" runat="server" PostBackUrl="order.aspx" onclick="CartOrderButton_Click">Order Me</asp:LinkButton>