日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

asp.net 表单总结

發(fā)布時(shí)間:2025/4/14 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net 表单总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ASP.NET Web Forms - HTML 表單

http://www.runoob.com/aspnet/aspnet-forms.html#

所有的服務(wù)器控件都必須出現(xiàn)在 標(biāo)簽中, 標(biāo)簽必須包含 runat=“server” 屬性。

ASP.NET Web 表單
所有的服務(wù)器控件都必須出現(xiàn)在 標(biāo)簽中, 標(biāo)簽必須包含 runat=“server” 屬性。

runat=“server” 屬性表明該表單必須在服務(wù)器上進(jìn)行處理。同時(shí)也表明了包含在它內(nèi)部的控件可被服務(wù)

器腳本訪問:

...HTML + server controls

注釋:該表單總是被提交到自身頁(yè)面。如果您指定了一個(gè) action 屬性,它會(huì)被忽略。如果您省略了

method 屬性,它將會(huì)默認(rèn)設(shè)置 method=“post”。同時(shí),如果您沒有指定 name 和 id 屬性,它們會(huì)由

ASP.NET 自動(dòng)分配。

注釋:一個(gè) .aspx 頁(yè)面只能包含一個(gè) 控件

如果您在一個(gè)包含不帶有 name、method、action 或 id 屬性的表單的 .aspx 頁(yè)面中選擇查看源代碼,

您會(huì)看到 ASP.NET 添加這些屬性到表單上了,如下所示:

...some code

提交表單
表單通常通過點(diǎn)擊按鈕來提交。ASP.NET 中的 Button 服務(wù)器控件的格式如下:
<asp:Button id=“id” text=“l(fā)abel” OnClick=“sub” runat=“server” />

id 屬性為按鈕定義了一個(gè)唯一的名稱,text 屬性為按鈕分配了一個(gè)標(biāo)簽。onClick 事件句柄規(guī)定了一

個(gè)要執(zhí)行的已命名的子例程。

在下面的例子中,我們?cè)谝粋€(gè) .aspx 文件中聲明了一個(gè)按鈕控件。一次鼠標(biāo)單擊就可以運(yùn)行一個(gè)子例程

,可以更改該按鈕上的文本。

實(shí)例

========

ASP.NET中Form表單不可以嵌套使用

https://www.jb51.net/article/73225.htm

我非常確定在ASP 中是可以有多個(gè)form 表單的,以前常常這樣干的,在后臺(tái)分類管理頁(yè)面中,把添加和

修改放在同一個(gè)頁(yè)面,這樣就需要用到兩個(gè) form 表單進(jìn)行提交服務(wù)器代碼處理。

經(jīng)過測(cè)試,在ASP.NET 也是可以一個(gè)頁(yè)面有多個(gè)form 表單的,例如下面的代碼:

但是,form 表單不能進(jìn)行嵌套使用,例如下面的代碼是錯(cuò)誤的:

還有一點(diǎn)需要注意的是,ASP.NET 中,當(dāng)頁(yè)面中有多個(gè)form 表單時(shí),只允許一個(gè)form 帶有

runat=“server” 屬性,否則產(chǎn)生異常。這是一些 ASP.NET 編程入門的童鞋常犯的錯(cuò)誤!

小編認(rèn)為,在 ASP.NET 的編程模式中,很少情況一個(gè)頁(yè)面中出現(xiàn)兩個(gè)或多個(gè)form 表單。所在提交到服

務(wù)器代碼的功能都可以通過一個(gè)最外層的form 表單搞定,沒必要搞那么多,這也算是ASP.NET 與ASP 的

不同之處吧!

========

form表單:get 和post

get是通過url傳值,post是通過將表單值隱藏到http報(bào)文中不顯示get通過的數(shù)據(jù)有限,post才能傳遞大數(shù)據(jù)量

但是post會(huì)有瀏覽器提示重新提交表單的問題,get則沒有。

========

ASP.Net中表單POST到其他頁(yè)面的方法分享

https://www.jb51.net/article/47065.htm

在ASP中,我們通常把表單提交到另外一個(gè)頁(yè)面(接受數(shù)據(jù)頁(yè)面)。但是在ASP.NET中,服務(wù)端表單通常

都是提交到本頁(yè)面的,如果我設(shè)置

代碼如下:
form1.action=“test.aspx”;

那么就會(huì)導(dǎo)致視圖驗(yàn)證錯(cuò)誤的錯(cuò)誤,因?yàn)锳sp.net安全機(jī)制引起的。我們也可以關(guān)閉這個(gè)驗(yàn)證,在接受頁(yè)

面中(test.aspx)頭部加上

代碼如下:
<%@ Page EnableViewStateMac=“false” %>

但這樣做不是很安全,其實(shí)asp.net 2.0 還提供了一種方式提交到其他頁(yè)面,服務(wù)器按鈕控件提供了一

個(gè)屬性:PostBackUrl,這樣寫

代碼如下:
button1.PostBackUrl=“test.aspx”;

這樣就不會(huì)引起驗(yàn)證錯(cuò)誤的問題了,又很安全。

這里順便說一下動(dòng)態(tài)修改form表單屬性的方法一些方法,與上面無關(guān)系:例如修改target屬性

普通頁(yè)面:

代碼如下:
((System.Web.UI.HtmlControls.HtmlForm)this.FindControl(“form1”)).Target = “_blank”;

或者
代碼如下:
form1.Attributes[“target”] = “_blank”;

含母版頁(yè)master:
代碼如下:
((System.Web.UI.HtmlControls.HtmlForm)this.Master.FindControl(“form1”)).Target = “_blank”;

前臺(tái)修改:
代碼如下:
<asp:Button ID=“btnSubmit” runat=“server” Text=“Button”

"btnSubmit_Click"OnClientClick=“this.form.target=’_blank’” />

========

asp.net 防止用戶通過后退按鈕重復(fù)提交表單

https://www.jb51.net/article/20904.htm

經(jīng)過一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這

里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁(yè)面,但它們都有各自的局限。

防止用戶通過后退按鈕重復(fù)提交表單
<%
response.Buffer=true
response.Expires=0
response.ExpiresAbsolute=now()-1
response.CacheControl=“no-cache”
%>
response.Buffer=true的意思就是指明輸出頁(yè)面是否被緩沖,當(dāng)屬性值為True時(shí),服務(wù)器將不會(huì)向客戶

端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
<% Response.Flush %>或<% Response.End %>
語句,才會(huì)釋放緩沖區(qū)的信息。
Expires 屬性
Expires 屬性指定了在瀏覽器上緩沖存儲(chǔ)的頁(yè)距過期還有多少時(shí)間。如果用戶在某個(gè)頁(yè)過期之前又回到

此頁(yè),就會(huì)顯示緩沖區(qū)中的版本
語法
Response.Expires [= number]
參數(shù)
number
距過期還有多少分鐘。將此參數(shù)設(shè)置為 0 可使緩存的頁(yè)立即過期。
注釋
若此屬性在一頁(yè)上設(shè)置了多次,則使用最短的時(shí)間。
應(yīng)用于
Response 對(duì)象
Response.expires=0也表示立即過期,但如果client和server不在一個(gè)時(shí)區(qū)或者client的時(shí)間早于

server上的時(shí)間,則不能立即過期。所以用負(fù)數(shù)或者用Response.ExpiresAbsolute=now()-1來表示立即

過期,response.expires=1表示在1分鐘后過期。

asp中Response.ExpiresAbsolute=now()-1
在asp頁(yè)面中,通常會(huì)有這樣的設(shè)置。
Response.ExpiresAbsolute=now()-1‘設(shè)置過期時(shí)間的絕對(duì)值為當(dāng)前時(shí)間-1,即出來后就過期了
這是因?yàn)槟J(rèn)情況下,瀏覽器將頁(yè)面先載入緩存,然后才顯示出來.通過上述設(shè)置,使瀏覽器對(duì)頁(yè)面不

進(jìn)行緩存,所以當(dāng)用戶點(diǎn)"后退"后,由于頁(yè)面沒有緩存,所以瀏覽器只能再次通過向服務(wù)器發(fā)出HT

TP請(qǐng)求來得到頁(yè)面,這樣就實(shí)現(xiàn)了限制了用戶對(duì)同一網(wǎng)頁(yè)進(jìn)行多次操作。
asp中Response.Expires = -1
一般情況下,當(dāng)用戶請(qǐng)求WEB服務(wù)器時(shí),服務(wù)器把請(qǐng)求回復(fù)給客戶端。在客戶端,瀏覽器把緩存作為一種

加快速度的策略,就是當(dāng)請(qǐng)求時(shí)先檢查緩存的情況,如果有就直接調(diào)緩存了,而不請(qǐng)求服務(wù)器了。
在WEB程序設(shè)計(jì)中,有時(shí)為了防止重復(fù)的提交或者嚴(yán)格的次序等,必須讓用戶的數(shù)據(jù)立即在使用后就過期

,當(dāng)用戶后退時(shí)就顯示過期而不能繼續(xù)使用。也算是為安全考慮的吧。
一般,response.expires寫在頁(yè)面的最上端,后面跟的是一個(gè)時(shí)間,就是過期的時(shí)間,0表示立即過期。

asp中對(duì)瀏覽器緩存的設(shè)置
Response.CacheControl = “no-cache”
設(shè)置不緩存在臨時(shí)文件中.本句是指,上網(wǎng)時(shí)看到的圖片通常在internet的

接下來我們要討論的方法以后退按鈕本身為中心,而不是瀏覽器緩存。這兒有一篇文章Rewiring the

Back Button很值得參考。不過我注意到,如果使用這種方法,雖然用戶點(diǎn)擊一下后退按鈕時(shí)他不會(huì)看到

以前輸入數(shù)據(jù)的頁(yè)面,但只要點(diǎn)擊兩次就可以,這可不是我們希望的

效果,因?yàn)楹芏鄷r(shí)候,固執(zhí)的用戶總是能夠找到繞過預(yù)防措施的辦法。
  另外一種禁用后退按鈕的辦法是用客戶端javascript打開一個(gè)沒有工具條的窗口,這使得用戶很難

返回前一頁(yè)面,但不是不可能。一種更安全但相當(dāng)惱人的方法是,當(dāng)表單提交時(shí)打開一個(gè)新的窗口,與

此同時(shí)關(guān)閉表單所在的窗口。但我覺得這種方法不值得認(rèn)真考慮,因?yàn)槲?br /> 們總不能讓用戶每提交一個(gè)表單就打開一個(gè)新窗口。
  那么,在那個(gè)我們不想讓用戶返回的頁(yè)面是否也可以加入javascript代碼呢?在這個(gè)頁(yè)面中加入的

javascript代碼可用來產(chǎn)生點(diǎn)擊前進(jìn)按鈕的效果,這樣也就抵消了用戶點(diǎn)擊后退按鈕所產(chǎn)生的動(dòng)作。用

于實(shí)現(xiàn)該功能的javascript代碼如下所示:

同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠(yuǎn)。后來我又看到有人建議用

location.replace從一個(gè)頁(yè)面轉(zhuǎn)到另一個(gè)頁(yè)面。這種方法的原理是,用新頁(yè)面的URL替換當(dāng)前的歷史紀(jì)錄

,這樣瀏覽歷史記錄中就只有一個(gè)頁(yè)面,后退按鈕永遠(yuǎn)不會(huì)變?yōu)榭捎?。我想這可能正是許多人所尋求的

方法,但這種方法仍舊不是任何情況下的最好方法。使用這種方法的實(shí)例如下所示:
<A HREF=“PageName.htm” "javascript:location.replace(this.href);

event.returnvalue=false; ">
禁止后退到本頁(yè)面的鏈接
   試試下面這個(gè)鏈接:
   禁止后退到本頁(yè)面的鏈接!
  這種方法的缺點(diǎn)在于:簡(jiǎn)單地運(yùn)用Response.Redirect將不再有效,這是因?yàn)槊看斡脩魪囊粋€(gè)頁(yè)面轉(zhuǎn)

到另一個(gè)頁(yè)面,我們都必須用客戶端代碼清除 location.history。另外還要注意,這種方法清除的是最

后一個(gè)訪問歷史記錄,而不是全部的訪問記錄。
  點(diǎn)擊上面的鏈接,你將打開一個(gè)簡(jiǎn)單的HTML頁(yè)面。再點(diǎn)擊后退按鈕,你可以看到這時(shí)打開的不是本

頁(yè)面,而是本頁(yè)面之前的頁(yè)面!(當(dāng)然,你必須在瀏覽器中啟用了客戶端javascript代碼。)

經(jīng)過一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所

有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁(yè)面,但它們都有各自的局限

。由于不存在能夠完全禁用后退按鈕的方法,所以最好的方案應(yīng)該是:混合運(yùn)用客戶端腳本和服務(wù)器端

腳本。

https://www.jb51.net/Special/494.htm
asp.net 表單操作專題

總結(jié)

以上是生活随笔為你收集整理的asp.net 表单总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。