フォームアクション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を投稿することです。アクションがない場合は正常に機能し、コードのアクションを変更できないためです。
あなたの助けは大いに感謝されます乾杯