6

我有一个ASP.Net Page, aspx默认形式。

我有一个Submit按钮。点击后,它会将数据发布给自己。换句话说,Button Click Event()从后面的代码将执行必要的。

之后,我想将相同的数据ASp.Net Page, aspx从另一个域发布到另一个域。

那么,我该怎么做呢?

我尝试创建一个ForminButton Click Event和一个javascripttoSubmit以便Form它发布。但是Form is not appearing hence there is already a页面上的Form`。

有什么办法吗?

4

5 回答 5

10

使用 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>
于 2012-06-22T01:56:07.733 回答
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 有助于防止人们篡改您的视图状态数据。但是,如果篡改视图状态数据不是问题(并且对于一些没有欺诈或安全漏洞风险的应用程序可能不是问题),您可以将其关闭。阅读更多

于 2012-06-22T03:15:01.273 回答
2

我有一个类似的问题。我有一个简单的执行回发的 asp:button。在 Page_Load IsPostBack 部分,我做了一些复杂的验证。大多数人只是将表单提交到下一页并在那里进行验证,然后如果失败则重定向回来。但我认为这是马虎。所以解决方案是回发,然后在验证后从 CodeBehind 中提交。我相信这就是你要找的。

我想用“细节”把它画出来,但这很简单:

Server.Transfer("~/folder/page.aspx", True)

“True”是是否保存POST数据的标志。对我来说很好,让我知道它对你有用。

http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET

于 2013-04-08T18:28:24.197 回答
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>

请注意,此方法允许发布到其他域

于 2018-03-14T00:44:30.787 回答
-3

在后面的代码中使用

Response.Redirect("YourOtherPage.aspx?param1=xxx")
于 2012-06-22T02:28:34.947 回答