今天在研究Post資料發送問題
要實現在 .html Post到.aspx頁
我在.html頁面寫下這些測試代碼
<form action="Default2.aspx" method="post">
<input id="TextBox1" type="text" />
<input id="Submit1" type="submit" value="submit" />
</form>
在Default2.aspx.cs頁面中寫
Response.Write(Request.Form["TextBox1"].ToString());
怎麼也擷取不了.html頁面中的資料,
後來把.html改成.aspx的動態網頁,代碼不變,測試發現還是不行,
後來在HTML控制項中添加了runat="server",
<form action="Default2.aspx" method="post">
<input id="TextBox1" type="text" runat="server" />
<input id="Submit1" type="submit" value="submit" />
</form>
探索資料就能傳到Default2.aspx中了,
不刪除runat="server" 把頁面改回靜態頁,又不能傳送了。
網上找了很多代碼說,靜態頁發來的資料只能用Request.Files[]來擷取,
就在Default2.aspx.cs頁面中寫
Response.Write(Request.Files["TextBox1"].ToString());
還是不能擷取資料,
後來在萬般無奈之時分析加runat="server"的動態測試頁發現,
動態網頁發到用戶端會在標籤中加入name="TextBox1",
於是在靜態測試頁中直接加入name="TextBox1"
發現Default2.aspx.cs中可以擷取值了。
從中得出一結論,在ASP.NET中,POST傳值是根據name屬性來區分不同控制項的
Request.Form["TextBox1"]是在尋找表單中name="TextBox1"的控制項而不是ID="TextBox1"的控制項
//------------------------------------------
asp.net控制項<form >為什麼不能post到其他頁 ??
辦法:預設都是到當前頁,在action裡加也是沒用的,應該在form中加onsubmit="this.aciton='xxx.aspx'";注意取值的時候用Request
FORM裡套FORM當然不行。又想用VS的伺服器處理控制項,又想要POST,這是違背微軟的意願的。 並且在不帶runat=server的表單上不要使用<asp:imagebutton,只能用type=submit |
|
<form runat=server action="xxx.aspx">
</form>