ASP.NET進階(1):form是什嗎?

來源:互聯網
上載者:User
文章目錄
  • 代碼執行個體:
form是什嗎?

<form>標籤是HTML裡最重要的標籤之一,是我們最常用的標籤之一。但是,我想說,在很多初級.net程式員腦海裡,他就是一個承載控制項的母體,至於他的作用是什麼可能都不清楚。form是一個表單,用來向伺服器post資料。傳統的web開發(沒有控制項概念的開發),form標籤的寫法是<form id="form1" action="" method="post">...</form>(可以看asp.net產生的html原始碼)。
Id我們知道,那Action是什嗎?Method是什麼呢?

get和post

Action是form要提交到哪個地址(請求發送到哪個頁),Method是提交(頁面請求)的方式(get or post)。“提交”其實也是頁面請求,只是有的會發送資料,有的不會。
ASP.NET產生的html代碼你會看到action是自己?這是什麼意思?
實際上是當使用者點擊提交按鈕後,又再一次請求自己這個的頁面,並且處理了提交資料,具體的處理過程我會在後面的章節中一一道來。

我們知道,http協議裡有Get和Post兩種請求(另外還有put和delete,這裡不討論)。顧名思義,get是“擷取”,post是“發送”——即向伺服器提交資料。伺服器通過Action指定的頁面來處理post過來的資料(Request.Form["InputName"]擷取具體控制項值)。

這樣又有新問題,form的method可以設定為get嗎?他們有什麼區別? 
method是可以設定為get的。但是get訪問URL的方式並不是向伺服器發送資料,只負責擷取。
所以如果我們要把表單的資料向服務端發送,只能把資料放在網址裡的參數裡,服務端可以通過Request.QueryString["InputName"]來得到控制項的值。
但是,url的長度畢竟有限,而且是明文,所以get的方式不能提交大資料和隱私資料。而post顯然沒這個限制,適合大量資料提交。

submit

 submit即是“提交”的意思。
但是為什麼ASP.NET裡卻沒有submit控制項呢?只有<asp:button/>。實際上查看網頁原始碼就可以發現WebForm已經幫我們“做”了一個提交按鈕,只是我們跟他不熟。
提交按鈕的標籤是<input type="submit"/>,但ASP.NET的button產生的則是<input type="button">。button是不能觸發表單提交的,只有通過submit才能觸發form的提交。 
注意我加了個新的詞彙,form的提交! 是的,form是什嗎? 怎麼又變成它的提交了,不是按鈕嗎?
在瀏覽器裡,所有的html節點和js變數都是window的prototype(參照Javascript權威指南第五版的說法)。
form1(form的id)這個form是一個dom執行個體。他有自己的成員、事件、方法(詳細請看http://www.w3school.com.cn/htmldom/dom_obj_form.asp),其中有個方法就是submit()!
ASP.NET雖然沒有用submit,但他用javascript寫了一個小方法來調用form的submit方法一樣可以實現表單的提交。
所以我們在平時開發網頁時,也可以實現自己來調用form的submit,當然,我們可以在提交之前做一些處理(比如驗證填寫情況)。

代碼執行個體:

 

<html>
<head>
<script type="text/javascript">
function formSubmit()
{
document.getElementById("myForm").submit()
}
</script>
</head>

<body>

<form id="myForm" action="js_form_action.asp" method="get">
Firstname: <input type="text" name="firstname" size="20"><br />
Lastname: <input type="text" name="lastname" size="20"><br />
<br />
<input type="button" onclick="formSubmit()" value="Submit">
</form>
</body>

</html>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.