0

フォームアクションURLのオーバーライドに問題があります

フォームアクションをオーバーライドするクラスがあります。

<html>
<head>
</head>
<body>
       <form id="form1" runat="Server"  action="https://www.test.com">
        <div style="">
            <asp:button runat="Server" onclick="PostMe" Text="Post"/>
        </div>

        <asp:HiddenField runat="server"  ID="test" value="0" />
        <asp:HiddenField runat="server"  ID="test2" value="0" />

    </form>
</body>
</html>





<script runat="server">

    void PostMe(Object sender,EventArgs e){

        RemotePost2 myremotepost =  new RemotePost2();
        myremotepost.Url = "https://www.test.com";
        myremotepost.Add("field1","Tom");
        myremotepost.Add("field2","Sawyer");
        myremotepost.Post();
    }


    public class RemotePost2{
            private System.Collections.Specialized.NameValueCollection Inputs = new System.Collections.Specialized.NameValueCollection();


            public string Url = "";
            public string Method = "post";
            public string FormName = "forms";

            public void Add(string name,string value){
                Inputs.Add(name,value);
            }

            public void Post(){
                System.Web.HttpContext.Current.Response.Clear();

                System.Web.HttpContext.Current.Response.Write("<html><head>");
                System.Web.HttpContext.Current.Response.Write(string.Format("</head><body onload=\"document.{0}.submit()\">",FormName));
                System.Web.HttpContext.Current.Response.Write(string.Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >",FormName,Method,Url));
                for(int i=0;i< Inputs.Keys.Count;i++){
                    System.Web.HttpContext.Current.Response.Write(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">",Inputs.Keys[i],Inputs[Inputs.Keys[i]]));
                }
                System.Web.HttpContext.Current.Response.Write("</form>");
                System.Web.HttpContext.Current.Response.Write("</body></html>");

                System.Web.HttpContext.Current.Response.End();
            }
    }

問題は、field1とfield2を投稿できず、代わりにフォームがtestとtest2の値を投稿することです。postBackUrl属性を使用すると、testとtest2が投稿されます。

私がやりたいのは、フォームアクションが空白でないときにfield1とfield2を投稿することです。アクションがない場合は正常に機能し、コードのアクションを変更できないためです。

あなたの助けは大いに感謝されます乾杯

4

1 に答える 1

3

ロード機能の背後にあるコードに以下を追加できます

myButton.Attributes.Add( "onClick"、 "javascript:document.forms [0] .action ='http://otherserver.com/theirpage.html';");

myButtonはボタンのIDになります。

于 2012-04-06T11:24:36.227 に答える