我有ASP.Net Page, aspx
的默认表单。
我有一个Submit
按钮。点击后,它会将数据发布给自己。换句话说,来自代码的Button Click Event()
将执行必要的。
之后,我想将相同的数据发布到另一个域中的另一个ASp.Net Page, aspx
。
那么,我该怎么做呢?
我尝试在Form
和Button Click Event
javascript
Submit
创建Form
,以便发布。Form is not appearing hence there is already a
但是页面上的{{1}}表单。
无论如何都要这样做?
答案 0 :(得分:9)
使用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>
答案 1 :(得分:2)
这是我不推荐的一种方法,但它会做你想要的。它使用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有助于防止人们篡改您的视图状态数据。但是,如果不考虑篡改视图状态数据(并且可能不适用于没有欺诈或安全漏洞风险的某些应用程序),则可以将其关闭。 Read More
答案 2 :(得分:2)
我有类似的问题。我有一个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
答案 3 :(得分:1)
类似的问题。太痛苦了。
最后我在主页面中放了一个表单(这样它不在另一个表单中):
<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>
请注意此方法允许发布到其他域
答案 4 :(得分:-3)
在后面的代码中使用
Response.Redirect("YourOtherPage.aspx?param1=xxx")