[英]Post ASP.Net Form data to another page
我有一個ASP.Net Page, aspx
及其默認格式。
我有一個Submit
按鈕。 點擊后,它會將數據發布給自己。 換句話說,后面的代碼中的Button Click Event()
將執行必要的操作。
之后,我想將相同的數據發布到另一個ASp.Net Page, aspx
來自另一個域的ASp.Net Page, aspx
。
那么,我該怎么做呢?
我嘗試在Button Click Event
和javascript
創建一個Form
以Submit
Form
以便它發布。 但Form is not appearing hence there is already a
頁面上Form is not appearing hence there is already a
表格。
無論如何要做到這一點?
使用Button的PostBackUrl屬性。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.postbackurl.aspx
<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="head1" runat="server">
<title>Button.PostBackUrl Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Button.PostBackUrl Example</h3>
Enter a value to post:
<asp:textbox id="TextBox1"
runat="Server">
</asp:textbox>
<br /><br />
<asp:button id="Button1"
text="Post back to this page"
runat="Server">
</asp:button>
<br /><br />
<asp:button id="Button2"
text="Post value to another page"
postbackurl="Button.PostBackUrlPage2cs.aspx"
runat="Server">
</asp:button>
</form>
</body>
</html>
這是我不推薦的一種方法,但它會做你想要的。 它使用javascript更改url(例如,到default2.aspx),使用表單的action屬性發布表單,然后重新發布表單
protected void btnClick(object sender, EventArgs e)
{
string script = "<script> document.forms[0].action='default2.aspx'; document.forms[0].submit(); </script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "postform", script);
}
第二頁應該有EnableViewStateMac="false"
<%@ Page Language="C#" EnableViewStateMac="false" AutoEventWireup="true"
CodeBehind="default2.aspx.cs" Inherits="CodeGen.default2" %>
注意:通過在頁面或web.config中設置enableViewStateMac = false來關閉MAC生成。不建議這樣做,因為MAC有助於防止人們篡改您的視圖狀態數據。 但是,如果篡改視圖狀態數據不是一個問題(並且它可能不適用於沒有欺詐或安全漏洞風險的某些應用程序),您可以將其關閉。 閱讀更多
我有一個類似的問題。 我有一個asp:按鈕,它只是執行回發。 在Page_Load IsPostBack部分,我做了一些復雜的驗證。 大多數人只是將表單提交到下一頁並在那里進行驗證,然后在失敗時重定向。 但我覺得這很邋.. 所以解決方案是回發,然后在驗證時,從CodeBehind內提交。 我相信這就是你要找的東西。
我想用“細節”來畫這個,但它很簡單:
Server.Transfer("~/folder/page.aspx", True)
“True”是是否保留POST數據的標志。 對我來說工作正常,讓我知道它是如何工作的。
http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET
類似的問題。 太痛苦了。
最后我在主頁面中放了一個表單(這樣它不在另一個表單中):
<form method="post" id="asp-form-hack" style="display: none;"></form>
然后,在aspx頁面中,我使用它如下:
<script>
$(document).ready(function () {
var $loginButton = $("#login-button");
var loginForm = document.forms["asp-form-hack"];
loginForm.action = "<page-to-postback>.aspx";
$loginButton.on("click", Login);
function Login() {
// read values from input fields in the page
var username = $("#t_username").val();
var password = $("#t_password").val();
// create input elements with the same values
var usernameInput = document.createElement("input");
usernameInput.name = "txtUsername";
usernameInput.type = "text";
usernameInput.value = username;
var passwordInput = document.createElement("input");
passwordInput.name = "txtPassword";
passwordInput.type = "password";
passwordInput.value = password;
// append the input elements to the form
loginForm.appendChild(usernameInput);
loginForm.appendChild(passwordInput);
// setTimeout prevents your page from understanding
// that you are submitting from another form
setTimeout(function () {
loginForm.submit();
}, 0);
}
});
</script>
請注意, 此方法允許發布到其他域
在代碼背后只是使用
Response.Redirect("YourOtherPage.aspx?param1=xxx")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.