你能在页面代码后面获得PostBackUrl的动作吗?
我想调用一个执行某些数据库更新的onclick函数,然后回发到一个不同的URL,其值为隐藏字段。
答案 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时必须非常小心,因为传输发生在服务器中,并且从不通知浏览器页面与请求的页面不同。如果您不期待它,当您尝试回发时,这会让您遇到麻烦。
我其实只是写了一篇博客......
答案 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>