簡體   English   中英

將ASP.Net表單數據發布到另一頁面

[英]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 Eventjavascript創建一個FormSubmit 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM