導航:首頁 > 凈水問答 > 表單提交前過濾危險字元aspnet

表單提交前過濾危險字元aspnet

發布時間:2025-07-28 18:28:09

A. jquery有什麼作用

jquery的作用

jQuery最初就是把javascript封裝起來,方便調用。現在基於jQuery多了很多開源插件,如:easyUI是坐表格和布局的,Slideshow做電子相冊的,你想做什麼,直接把插件拿過來就用,非常方便。

當然,jQuery做前台是非常好的東西,如果你想和後台代碼,如action一起用,還是需要一定功底的。

jquery-1.4.2.min.js文件有什麼用途?

不管是1.4.2還是jQuery以後的版本,都是用js封裝的功能庫,方便開發者使用。下面是就jQuery的具體作用:

1、取得頁面中的元素。如果不使用JavaScript庫,遍歷DOM(DocumentObjectModel,文檔對象模型)樹,以及查找HTML文檔結構中某個特殊的部分,必須編寫很多行代碼。jQuery為准確地獲取需要檢查或操縱的文檔元素,提供了可靠而富有效率的選擇符機制。

2、修改頁面的外觀。CSS雖然為影響文檔呈現的方式提供了一種強大的手段,但當所有瀏覽器不完全支持相同的標准時,單純使用CSS就會顯得力不從心。jQuery可以彌補這一不足,它提供了跨瀏覽器的標准解決方案。而且,即使在頁面已經呈現之後,jQuery仍然能夠改變文檔中某個部分的類或者個別的樣式屬性。

3、改變頁面的內容。jQuery能夠影響的范圍並不局限於簡單的外觀變化,使用少量的代碼,jQuery就能改變文檔的內容。可以改變文本、插入或翻轉圖像、對列表重新排序,甚至,對HTML文檔的整個結構都能重寫和擴充——所有這些只需一個簡單易用的API。

4、響應用戶的頁面操作。即使是最強大和最精心設計的行為,如果我們無法控制它何時發生,那它也毫無用處。jQuery提供了截取形形色色的頁面事件(比如用戶單擊一個鏈接)的適當方式,而不需要使用事件處理程序搞亂HTML代碼。此外,它的事件處理API也消除了經常困擾Web開發人員的瀏覽器不一致性。

5、為頁面添加動態效果。為了實現某種互動式行為,設計者也必須向用戶提供視覺上的反饋。jQuery中內置的一批淡入、擦除之類的效果,以及製作新效果的工具包,為此提供了便利。

6、無需刷新頁面即可從伺服器獲取信息。這種編程模式就是眾所周知的AJAX(AsynchronousJavaScriptandXML,非同步JavaScript和XML),它能輔助Web開發人員創建出反應靈敏、功能豐富的網站。jQuery通過消除這一過程中的瀏覽器特定的復雜性,使開發人員得以專注於伺服器端的功能設計。

jquery是什麼在網站中有什麼作用

網路:

????Jquery是繼prototype之後又一個優秀的Javascript框架。它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html裡面插入一堆js來調用命令了,只需定義id即可。

維基網路:

????jQuery是一套跨瀏覽器的JavaScript庫,簡化HTML與JavaScript之間的操作。[1]由JohnResig在2006年1月的BarCampNYC上發布第一個版本。目前是由DaveMethvin領導的開發團隊進行開發。全球前10000個訪問最高的網站中,有65%使用了jQuery,是目前最受歡迎的JavaScript庫[2][3]。

自己語言:jquery是javascript庫,js其實是有很多原生對象以及方法組成,而jquery其實就相當於對方法和對象的另一封裝,使得受眾群體能夠更快更方便的書寫一些方法,和對html裡面dom對象的操作;

jquery-1.4.2.min.js文件有什麼用途?裡面的代碼都有什麼用途?

jquery-1.4.2.min.js為JQuery庫,版本號為1.4.2,min表明該版本為壓縮版,去除了空白字元及注釋,並對代碼進行了變數、函數名壓縮優化等,適合用於生產環境。

JQuery是繼prototype之後又一個優秀的Javascript庫。它是輕量級的js庫?,它兼容CSS3,還兼容各種瀏覽器(IE?6.0+,?FF?1.5+,?Safari?2.0+,?Opera?9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery是一個兼容多瀏覽器的javascript庫,核心理念是write?less,do?more(寫得更少,做得更多)。

JQuery的作用:

主要用於兼容個瀏覽器的JavaScript用法,只需要使用jQuery中指定的方法即可實現在各主流瀏覽器中同時兼容,能夠讓開發人員關注業務的開發而不必關心JavaScript的兼容性問題。

常見的幾類如下:

選擇器:用於選取特定的一個或多個dom節點

屬性/CSS:用於改變dom的屬性值及一些JavaScript控制的樣式

dom操作:如對dom節點的增刪查改

遍歷:對dom樹、數組、其他可遍歷的類型進行遍歷操作

事件:兼容各瀏覽器的事件調用,及自定義的事件等

效果:如JavaScript動畫等

Ajax:統一各瀏覽器的Ajax請求的用法

JQuery提供了上百個函數,提高了開發的效率,方便開發者在不同瀏覽器下使用相同的一套代碼實現指定業務功能。

jquery簡介

JQuery是繼prototype之後又一個優秀的Javascript庫。它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html裡面插入一堆js來調用命令了,只需要定義id即可。

jQuery是一個兼容多瀏覽器的javascript庫,核心理念是writeless,domore(寫得更少,做得更多)。jQuery在2006年1月由美國人JohnResig在紐約的barcamp發布,吸引了來自世界各地的眾多JavaScript高手加入,由DaveMethvin率領團隊進行開發。如今,jQuery已經成為最流行的javascript庫,在世界前10000個訪問最多的網站中,有超過55%在使用jQuery。

jQuery是免費、開源的,使用MIT許可協議。jQuery的語法設計可以使開發更加便捷,例如操作文檔對象、選擇DOM元素、製作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,jQuery提供API讓開發者編寫插件。其模塊化的使用方式使開發者可以很輕松的開發出功能強大的靜態或動態網頁。

jQuery,顧名思義,也就是JavaScript和查詢(Query),即是輔助JavaScript開發的庫。

歷史

大概在1992年,一家稱作Nombas的公司開發了一種叫做C減減(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。Cmm背後的理念很簡單:一個足夠強大可以替代宏操作(macro)的腳本語言,同時保持與C(和C++)足夠的相似性,以便開發人員能很快學會。這個腳本語言捆綁在一個叫做CEnvi的共享軟體中,它首次向開發人員展示了這種語言的威力。

Nombas最終把Cmm的名字改成了ScriptEase,原因是後面的部分(mm)聽起來過於消極,同時字母C「令人害怕」。

當NetscapeNavigator嶄露頭角時,Nombas開發了一個可以嵌入網頁中的CEnvi的版本。這些早期的試驗被稱為EspressoPage(濃咖啡般的頁面),它們代表了第一個在萬維網上使用的客戶端語言。而Nombas絲毫沒有料到它的理念將會成為萬維網的一塊重要基石。

當網上沖浪越來越流行時,對於開發客戶端腳本的需求也逐漸增大。此時,大部分網際網路用戶還僅僅通過28.8kbit/s的數據機連接到網路,即便這時網頁已經不斷地變得更大和更復雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與伺服器進行多次地往返交互。設想一下,用戶填完一個表單,點擊提交按鈕,等待了30秒的處理後,看到的卻是一條告訴你忘記填寫一個必要的欄位。

那時正處於技術革新最前沿的Netscape,開始認真考慮開發一種客戶端腳本語言來解決簡單的處理問題。

當時工作於Netscape的BrendanEich,開始著手為即將在1995年發行的NetscapeNavigator2.0開發一個稱之為LiveScript的腳本語言,當時的目的是在瀏覽器和伺服器(本來要叫它LiveWire)端使用它。Netscape與Sun及時完成LiveScript實現。

就在NetscapeNavigator2.0即將正式發布前,Netscape將其更名為JavaScript,目的是為了利用Java這個網際網路時髦詞彙。Netscape的賭注最終得到回報,JavaScript從此變成了網際網路的必備組件。

因為JavaScript1.0如此成功,Netscape在NetscapeNavigator3.0中發布了1.1版。恰巧那個時候,微軟決定進軍瀏覽器,發布了IE3.0並搭載了一個JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web瀏覽器領域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語言發展過程中的重要一步。

在微軟進入後,有3種不同的JavaScript版本同時存在:NetscapeNavigator3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語言不同的是,JavaScript並沒有一個標准來統一其語法或特性,而這3種不同的版本恰恰突出了這個問題。隨著業界擔心的增加,這個語言的標准化顯然已經勢在必行。

2006年1月,jQuery的第一個版本面世,至今已經有10年多了(註:這個時間點是截止至出書時間)。雖然過了這么久,但它依然以其簡潔、靈活的編程風格讓人一見傾心。在本篇文章中,我們將講述jQuery的發展歷史,讓讀者對jQuery有更多的了解。

在jQuery迅速發展的同時,一些大的廠商也看中了商機。2009年9月,微軟和諾基亞公司正式宣布支持開源的jQuery庫,另外,微軟公司還宣稱他們將把jQuery作為VisualStudio工具集的一部分。他將提供包括jQuery的智能提示、代碼片段、示例文檔編制等內容在內的功能。微軟和諾基亞公司將長期成為jQuery的用戶成員,其他成員還有Google,Intel,IBM,Intuit等公司。

2009年1月,jQuery1.3版發布,它使用了全新的選擇符引擎Sizzle,在各個瀏覽器下全面超越其他同類型JavaScript框架的查詢速度,程序庫的性能也因此有了極大提升。這一版本的第2個變化就是提供live()方法,使用live()方法可以為當前及將來增加的元素綁定事件,在1.3版之前,如果要為將來增加的元素綁定事件,需要使用livequery插件,而在1.3版中,可以直接用live()方法。2005年8月,JohnResig提議改進Prototype的「Behaviour」庫,於是他在blog上發表了自己的想法,並用了3個例子做說明。

2010年2月,jQuery1.4.2版發布,它新增了有關事件委託的兩個方法:delegate()和undelegate()。delegate()用於替代1.3.2中的live()方法。這個方法比live()來的方便,而且也可以達到動態添加事件的作用。比如給表格的每個td綁定hover事件

特點

1.動態特效

2.AJAX

3.通過插件來擴展

4.方便的工具-例如瀏覽器版本判斷

5.漸進增強

6.鏈式調用

7.多瀏覽器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了對InternetExplorer6,7,8的支持)

歷史版本

jQuery1.0

(2006年8月):該庫的第一個穩定版本,已經具有了對CSS選擇符、事件處理和AJAX交互的穩健支持。

jQuery1.1

(2007年1月):這一版大幅簡化了API。許多較少使用的方法被合並,減少了需要掌握和解釋的方法數量。

jQuery1.1.3

(2007年7月):這次小版本變化包含了對jQuery選擇符引擎執行速度的顯著提升。從這個版本開始,jQuery的性能達到了Prototype、Mootools以及Dojo等同類JavaScript庫的水平。

jQuery1.2

(2007年9月):這一版去掉了對XPath選擇符的支持,原因是相對於CSS語法它已經變得多餘了。這一版能夠支持對效果的更靈活定製,而且藉助新增的命名空間事件,也使插件開發變得更容易。

jQueryUI(2007年9月):這個新的插件套件是作為曾經流行但已過時的Interface插件的替代項目而發布的。jQueryUI中包含大量預定義好的部件(widget),以及一組用於構建高級元素(例如可拖放的界面元素)的工具。

jQuery1.2.6

(2008年5月):這一版主要是將BrandonAaron開發的流行的Dimensions插件的功能移植到了核心庫中。

jQuery1.3

(2009年1月):這一版使用了全新的選擇符引擎Sizzle,庫的性能也因此有了極大提升。這一版正式支持事件委託特性。

jQuery1.3.2

(2009年2月):這次小版本升級進一步提升了庫的性能,例如改進了:visible/:hidden選擇符、.height()/.width()方法的底層處理機制。另外,也支持查詢的元素按文檔順序返回。

jQuery1.4

(2010年1月14號):對代碼庫進行了內部重寫組織,開始建立一些風格規范。老的core.js文件被分為attribute.js,css.js,data.js,manipulation.js,traversing.js和queue.js;CSS和attribute的邏輯分離。

重要變化:

1.Ajax重寫

Ajax模塊完全進行了重寫。新增一個jXHR對象,為不同瀏覽器內置的XMLHttpRequest提供了一致的超集。對於XMLHttpRequest之外的傳輸機制,比如JSONP請求,jXHR對象也可以進行處理。(詳情可以參見:jQuery.ajax文檔)

此外,系統的可擴展性大大增強,可以附加各種數據處理器、過濾器和傳輸機制,為開發新的Ajax插件提供了方便。

2.延遲對象

延遲對象(DeferredObject,jQuery.Deferred對象)是一個可鏈接的(chainable)實用工具對象,實現了Promise介面,可以在回調隊列中注冊多個回調、調用回調隊列並轉發任何同步/非同步函數的成敗狀態。正如UsingDeferredsinjQuery1.5一文中說明的,其結果是在jQuery中能夠將依賴於某個任務(事件)結果的邏輯與任務本身解耦了。這一點在JavaScript中其實並不新鮮,Mochikit和Dojo等已經實現有些日子了。由於jQuery1.5的Ajax模塊內置使用了延遲對象,因此通過jQuery編寫Ajax程序將自動獲得這一功能。

開發人員藉此可以使用無法立即獲得的返回值(如非同步Ajax請求的返回結果),而且第一次能夠附加多個事件處理器。

例如,使用了新的jQuery內部AjaxAPI就可以實現下面的代碼了:

//,//=$.ajax({url:"example.php"}).success(function(){alert("success");}).error(function(){alert("error");}).complete(function(){alert("complete");});//performotherworkhere...//.complete(function(){alert("secondcomplete");});

此外,使用jQuery.Deferred還可以開發自己的延遲對象。更多詳情參見:延遲對象文檔。

3.jQuery.sub()

jQuery1.5提供了一種創建和修改jQuery副本的方式。可以用來添加不向外部公開的方法,或者對jQuery的某些方法進行重新定義以提供新功能,或者提供更好的封裝、避免名稱空間沖突。當然,也可以用來開發插件,但Resig強烈建議在開發插件之前,先考慮jQueryUIwidget工廠。

值得注意的是,sub函數並不提供真正的隔離,所有方法、數據、調用仍然依靠jQuery本身來支持。

4.遍歷性能提高

在新版本中.children(),.prev(),.next()幾個常用的遍歷函數性能有了顯著提高。

5.內部開發系統

JohnResig還特別提到了jQuery團隊內部開發系統的兩點改變:一是伺服器端用Node.js替換了老的Java/Rhino系統,使得團隊可以專注於JavaScript環境的新變化;二是所用的代碼優化程序從GoogleClosure切換到UglifyJS,新工具的壓縮效果非常令人滿意。

使用方法

jQuery可以下載使用,有兩個版本的jQuery可供下載

Proctionversion-用於實際的網站中,已被精簡和壓縮。

Developmentversion-用於測試和開發(未壓縮,是可讀的代碼)

jQuery1.8.0版時壓縮前後的對比

插件機制

jQuery的官方插件是jQueryUI。開發者可以任意擴展jQuery的函數庫或者按照自己的需求開發UI組件。網上已經有數以萬計的jQuery插件,覆蓋各種各樣的需求。例如Ajax輔助、數據表格、動態列表、XML工具、拖曳、cookie處理、彈出層等等。jQuery的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇,例如.

隨著jQuery插件在網站建設過程中的使用率不斷的增加,所以有必要跟進時代步伐開發出一些新的插件/代碼片段,以此來鞏固並提高前端用戶體驗,將用戶體驗提升到一個新的高度。其中包括FlatjQueryPriceSlider、GmapsjQueryMapPlugin、FormChimp——MailChimpAjaxpluginforjQuery等。

控制項

jQueryGantt控制項是一個基於原生HTML5/jQuery,功能豐富的控制項,該控制項真正實現了跨平台,在許多設備和瀏覽器中無縫的運行。

使用項目甘特圖中內置的調度,依賴等功能實現任務分層列表的可視化。

使用資源甘特圖實現一個資源利用視圖。

使用基於API的jQuery或者基於API的MVC可幫您輕松地安裝甘特圖並加快應用速度。

可與諸如KnockOut(KO),jQuery.tmpl等流行的jQuery模式一同使用。

jQuery對於Web設計師來說有什麼作用

Web設計師是否應該學習編寫代碼是個充滿爭議的問題。通常,在完成了一件網頁設計後他們把創建網頁代碼的繁重工作都留給了程序員們。這種現象不只出現在網路開發行業,在軟體及游戲開發業也是如此。

有人也說AJAX很難,但自從jQuery出現後,再難我們都可以輕松駕馭了。jQuery作為當前流行的JavaScript框架將使Ajax變得及其簡單。這篇文章就是為各位網站設計師和其他新手講述的,jQuery對於Web設計師來說有什麼作用?

對那些可能還沒聽說過jQuery的設計師來說,什麼是jQuery?

jQuery是一種讓開發和設計者在他們的網頁中添加交互內容的工具,它的核心命令讓你在網頁中定位或創建對象並對之進行操作,它事實上是一種更容易使用的JavaScript,可以不必強迫頁面刷新而對頁面進行各種操作。

為什麼jQuery對Web設計師有用?

JavaScript為設計拓寬了視野,而jQuery讓這一切變得更簡單。對那些通曉CSS的設計師來說,編寫jQuery代碼很類似,而對於那些擁有Flash經驗的設計師來說,jQuery是一種標准化的,開放的技術,它可以實現類似Flash的交互效果。

你將在TheFutureofWebDeisgnNewYork大會上做jQuery講座,大體內容是什麼?

我將對jQuery庫做一簡介,接下來會通過一些實踐一步一步講解如何在站點中提升用戶體驗,我將演示一些技術,看看jQuery如何彌補CSS或某些瀏覽器的CSS處理的不足。我將講解如何善用動畫,如何防止濫用。最後將演示一些有趣的插件。

jQuery有不少實用插件,哪一些是設計師不可或缺的?

這要看網站,或者說客戶的需求。我自己常用的一個插件是MikeAlsup設計的CyclePlugin,這是一個輪番播放圖片的飾件,擁有很漂亮的過度效果,這個插件並不限於播放圖片,還可以播放任何內容,它確實很不錯,在那麼小的空間可以放那麼多內容。

最近

B. 開發中iFrame表單提交的古怪問題解決

微軟的 NET Framework 自帶了Ajax框架 將以往傳統的ASP NET開發帶入了一個全新的Ajax NET開發時代 我們除了在頁面上引入ScriptManager控制項用以在客戶端注冊功能豐富的Ajax框架腳本外 這個龐大的框架還提供了諸多功能強大的Ajax控制項 例如著名的UpdatePanel ModalPopupExtender Rating等控制項 Ajax框架和控制項的引入大大簡化了開發人員的開發任務 同時也給用戶帶來了全新的Web體驗 但是我們在使用復雜的框架提供的腳本時也常常會遇到這樣或那樣的問題 有很多問題相信不少開發人員都能獨立解決 不過有些復雜的問題還真是很傷腦筋

本來在MOSS中使用Ajax開發就已經不是一件輕易的事情 或許高手們覺得這沒有什麼 是的!我們在Google上會搜到很多介紹這方面的文章 而且配置步驟都寫得非常詳細 按照前輩們的經驗 只要認真按照步驟將環境配置好 一般都是沒有什麼問題的 在MOSS中開發Ajax應用程序就如同簡單的Ajax網頁一樣 只是部署的時候稍微要麻煩一些 這里我不想詳細講解在MOSS中如何進行Ajax開發 只是想說一說前段時間在MOSS開發中因為Ajax框架所引起的一個非常怪異的問題 一直困擾了我好幾天 不過最終算是委曲求全得找到了一個替代的解決辦法 至於會不會引起其它的什麼問題 讀者也可以幫我分析一下

前不久我寫了一篇有關在FireFox中通過腳本獲取客戶端本地所選文件路徑的文章 裡面介紹了通過客戶端上傳文件時如果通過javascript得到文件的本地路徑 事實上 在真正的文件上傳過程中 得到文件的客戶端路徑意義是不大的 除非我們需要實現如圖片本地預覽的功能 否則我們一般都可以通過Form的Post方法得到要上傳的文件 在C#一般都是這樣的

<body> <form id= form runat= server method= post enctype= multipart/form data > <input id= File name= mtfile type= file /> <asp:Button ID= Button runat= server Text= Button OnClick= Button _Click /> </form></body>

protected void Button _Click(object sender EventArgs e){ HttpFileCollection files = Request Files; if (files != null && files Count > ) { for (int i = ; i < files Count; i++) { // TODO something } }} 設置Form的method屬性為post 並設置enctype為mulipart/form data 當頁面提交時 在服務端通過Request Files方法即可得到上傳文件的對象集合 非常簡單 我們根本不需要在客戶端通過javascript得到文件的路徑 不過這里有一個限制 那就是頁面必須post到服務端才能得到要上傳的文件 也就是說 我們不能通過javascript方式在頁面無刷新的情況下將文件上傳到伺服器 這也是Ajax唯一不能做到的一件事情 不過我們通過一個比較老舊的技術可以避開這個問題 那就是在頁面上使用隱藏的iFrame 在頁面提交前將Form的target指向這個隱藏的iFrame 頁面提交時iFrame會被刷新提交 從而避免了整個頁面被刷新

事實上 在Ajax興起前 很多 無刷新 的頁面幾乎都是通過這種方式來實現的 iFrame可以提交數據 而且還避免了網頁的整體刷新 在Ajax興起後 iFrame似乎很少再被人們提起 但是有一個例外

那就是文件上傳!我們可以去當今比較流行的網站考察一下 像 郵箱 Gmail等 都無一例外地使用了iFrame上傳文件 我們可以將上面代碼中的HTML部分稍作修改就可以實現使用iFrame上傳文件的功能

<body> <form id= form runat= server target= ifu method= post enctype= multipart/form data > <iframe frameborder= id= ifu name= ifu ></iframe> <input id= File name= mtfile type= file /> <asp:Button ID= Button runat= server Text= Button OnClick= Button _Click /> </form></body> 後台代碼不變 只是在Form上加了一個target屬性 用來指向iFrame 當頁面提交時會自動提交iFrame對象 而不會將Form本身提交 當遇到頁面上還有其它表單需要提交時 我們可以這樣做 先在提交按鈕的客戶端事件上將Form的target指向隱藏的iFrame 然後返回True提交表單 這時iFrame會被提交 在服務端處理完數據保存後注冊一段腳本 用來將iFrame的父頁面中Form的target改回自身 這樣就可以模擬一次iFrame提交而不會影響到頁面上其它的功能 我們只是在頁面需要被提交時才去修改Form的target屬性 提交完後再改回來

這看起來似乎是一個很不錯的主意 看看代碼吧!

<body> <form id= form runat= server method= post enctype= multipart/form data > <iframe frameborder= id= ifu name= ifu ></iframe> <input id= File name= mtfile type= file /> <asp:Button ID= Button onclientclick= document forms[ form ] target = ifu ;return true; runat= server Text= Button OnClick= Button _Click /> </form></body>

protected void Button _Click(object sender EventArgs e){ HttpFileCollection files = Request Files; if (files != null && files Count > ) { for (int i = ; i < files Count; i++) { //TODO something } } string script = alert( { } );window parent document forms[ form ] target = _self ; ; ClientScript RegisterClientScriptBlock(this Page this GetType() string Empty string Format(script Save Successfully! ) true);}

盡管我們在頁面上使用Ajax控制項 該方法仍然會奏效 需要說明一點就是 上傳文件的功能是不能在UploadPanel控制項中使用的 否則功能會失效 因為文件上傳必須刷新頁面 除非我們使用iFrame提交表單 如果非要在UpdatePanel控制項中完成文件上傳功能 那必須設置UpdatePanel控制項的PostBackTrigger屬性 將觸發事件的控制項添加到PostBackTrigger中 如

<asp:UpdatePanel ID= update runat= server UpdateMode= Conditional > <ContentTemplate> <input id= File name= mtfile type= file /> <asp:Button ID= btSave runat= server Text= Save onclick= btSave_Click /> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID= btSave /> </Triggers></asp:UpdatePanel>

這將導致頁面回傳 UpdatePanel控制項的意義也就失去了 在頁面上放置隱藏的iFrame 按照前面介紹的方法通過javascript動態去修改Form的target屬性 提交iFrame 可以實現類似於Ajax方式的文件上傳功能 其實頁面同樣被刷新了 只是刷新的是隱藏的iFrame 用戶不會有什麼感覺

前面說了這么多 只是想說說我所遇到的問題的背景 現在步入正題!

在MOSS中開發頁面和普通的ASP NET頁面基本沒有什麼不同 主要就是部署的時候會有一些麻煩 那麼 按照前面介紹的方法將編寫好的頁面部署到站點上 運行時我發現了一個奇怪的問題 那就是第一次按鈕觸發事件的時候服務端可以正確響應 並且是通過iFrame提交過來的 但是從第二次開始就需要等待十幾秒的時間按鈕才能再次被觸發 一開始我以為是iFrame在被提交後沒有響應完畢 來不及處理第二次請求 後來通過設置斷點和插入調試腳本進行測試 發現iFrame已經完全響應完畢 按鈕還是不能被點擊(這里說的按鈕不能被點擊是指Button不能響應服務端事件)

究竟發生了什麼問題?

在 NET 時代 我們通常會遇到按鈕的事件丟失等問題 但這是在 NET 的環境下 根本不存在這種問題 況且按鈕在第一次的時候是可以被點擊的 程序一直處於運行狀態 沒有人修改過代碼 讓我非常奇怪!這個問題我反復調試並採用了很多不同的方法去嘗試 但是問題依舊 如查看頁面上其它部分可能導致的腳本干擾 setInterval方法的使用是否會導致程序處於等待狀態(事實上這個根本不可能)

去掉所有可能導致此問題的控制項和代碼等等 天啊!我幾乎嘗盡了所有能夠想到的辦法 但是這塊大石頭依然紋絲不動 我崩潰了!!

過了一個周末 在家睡了兩天 腦海中一直想的就是究竟是什麼原因導致了按鈕的事件不能被觸發 我也嘗試過在FireFox下利用FireBug跟蹤按鈕的客戶端代碼執行情況 沒有什麼結果 周一上班的時候突然想到用排除法來驗證一下 看看究竟是哪部分代碼出現了問題 因為之前我在本地創建的工程中使用了iFrame提交表單 並且利用javascript在頁面往返伺服器的過程中動態修改了Form的target屬性 並沒有發現按鈕事件不能被觸發的問題 說明問題不是出在我所寫的代碼中 我在MOSS站點中創建了一個功能一樣的頁面 上面只有非常簡單的幾行代碼 然後編譯 部署 激活特定的Feature 訪問頁面 簡單看了一下 功能很正常 說明這種方法在MOSS下是可以正常使用的 並沒有之前假象的會受到MOSS本身機制的影響

生產環境中的頁面要稍微復雜一些 裡面除了一些必須的功能和UserControl外 整個頁面是繼承自一個公共的模板頁 難道問題出在模板頁上?我又仔細看了看模板頁中的代碼 幾乎嘗試著將模板頁中所有的控制項都刪除了 但是問題依然沒有解決 一身冷汗啊 一上午的時間就這么讓我浪費了 做過MOSS項目的朋友可能會比較清楚 在MOSS上開發項目復雜的並不是如何去寫代碼 而是部署和調試 經常大把的時間都浪費在這個上面 更何況我為了測試這個問題產生的原因還要新建頁面重新部署站點 然後調試代碼 光這個過程就比較繁瑣了

反正已經開始做了 午飯過後 我打算徹底搞定它 問題既然不是出在頁面本身 那一定是出在模板頁上 因為之前沒加模板頁的時候是可以的 後來將頁面繼承自模板頁後問題就來了 在FireFox中查看頁面的源代碼 仔細查看生成的HTML和腳本 發現在Body和Form標簽上有兩個腳本事件 不知道是干什麼用的 很好奇 問了一下老大 他說這是MOSS在新建模板頁時自動加上的 沒有誰刻意去加它 代碼片段如下

<body onload= javascript:_spBodyOnLoadWrapper(); > <form id= Form runat= server onsubmit= return _spFormOnSubmitWrapper(); method= post enctype= multipart/form data > 我嘗試著將這兩個事件取消掉 然後重新部署運行程序 哈哈!終於可以了 那個按鈕的事件再也沒有丟失過 可以一直被點擊 而不會出現不響應的情況 其實罪魁禍首的就是form的onsubmit事件中的_spFormOnSubmitWrapper方法 取消它就可以解決問題

但是問題馬上又來了 既然這個事件是MOSS自動加上的 那肯定有它的用途 我們不能隨意就將它刪掉 說不定以後哪裡就會出問題(雖然我到後來也不太清楚這個函數究竟是用來干什麼的) 那麼只能曲線救國了 用FireBug看看它的具體代碼吧 順便跟了一下

var _spSuppressFormOnSubmitWrapper=false;function _spFormOnSubmitWrapper(){if (_spSuppressFormOnSubmitWrapper){return true;}if (_spFormOnSubmitCalled){return false;}if (typeof(_spFormOnSubmit)== function ){var retval=_spFormOnSubmit();var testval=false;if (typeof(retval)==typeof(testval) && retval==testval){return false;}}RestoreToOriginalFormAction();_spFormOnSubmitCalled=true;return true;} 這個方法只要返回true就會觸發伺服器端時間 如果返回false則不會觸發 我反復看了一下 導致函數返回false的原因是因為_spFormOnSubmitCalled的值為true 那麼我們只需要將這個變數的值設為false即可重新觸發伺服器端事件了 這個好辦 我馬上修改代碼 在button按鈕的客戶端事件代碼中這樣寫

//aspnetForm為Form的客戶端name iframeHidden為隱藏的iFrame的namedocument forms[ aspnetForm ] target = iframeHidden ;_spFormOnSubmitCalled = false;return true; 然後服務端返回的時候再將form的target改回_self 這樣就可以了!

我不知道MOSS自動加上的那個Form事件是用來干什麼的 但至少我讓_spFormOnSubmitCalled變數的值為false可以導致按鈕的事件被觸發 並且可以實現我預期的效果

因為我在頁面提交成功後會整個刷新頁面 所以也不用擔心修改這個值後會帶來什麼樣的後果 最後來看一下伺服器端要注冊的腳本

private const string scriptOK = @ alert( { } ); window parent location href += # ; window parent location reload(); ;private const string scriptFailed = @ alert( { } ); window parent document forms[ aspnetForm ] target = _self ; ; 分為兩種 如果成功則重新刷新整個頁面 如果失敗則修改父頁面Form的target屬性的值為_self 你可能會問我為什麼要將父頁面的location href加上一個# 這主要是為了解決在FireFox下通過iFrame提交表單並重新刷新整個頁面時出現是否重新提交數據的提示(這個問題在IE下不會出現) 瀏覽器只認URL 我們稍微修改一下URL的內容 只要地址不變 重新刷新頁面時就不會出現是否重新提交數據的提示了

到目前為止 我將我的代碼做了這樣的修改 不知道會不會遇到什麼問題 寫這篇文章的目的有兩個 一是記錄一下自己解決這個問題的過程 二是想告訴各位正在做MOSS開發的朋友 如果遇到通過Ajax方式無法觸發伺服器端事件的問題時 不妨認真檢查檢查客戶端生成的HTML和腳本 找找原因在哪裡

lishixin/Article/program/net/201311/12554

C. ASP.NET是什麼

ASP.NET是.NET FrameWork的一部分,是一項微軟公司的技術,是一種使嵌入網頁中的腳本可由網際網路伺服器執行的伺服器端腳本技術,它可以在通過HTTP請求文檔時再在Web伺服器上動態創建它們。 指 Active Server Pages(動態伺服器頁面) ,運行於 IIS(Internet Information Server 服務,是Windows開發的Web伺服器)之中的程序 。
………………………………………………

如果對aspnet感興趣,看看一個大專生怎麼自學aspnet到找到工作。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說 出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不 到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後 我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘 做技術的,可是處處碰壁。
一次偶然的機會,我才聽到aspnet這個行業。那天我去新華書店,在計算機分類那邊想找本書學習 。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習aspnet,然後給我介紹了一下 aspnet現在的火熱情況,告訴我學aspnet多麼的有前景,給我了一份傳單,aspnet培訓的廣告。聽了 她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下aspnet,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相 對比較高。我就下決心想學aspnet了。於是我去找aspnet培訓的相關信息,說真的,我也很迷茫,我 不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章是一個aspnet高手介紹沒有基礎的朋友怎麼自學入 門學aspnet,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實 在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會 我再去培訓。
主意一定,我就去搜索aspnet的視頻,雖然零星找到一些aspnet的視頻,但是都不系統,我是想找 一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教, 不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟推出的一份視頻《零基礎aspnet就業班》(喜歡《 零基礎aspnet就業班》的可以復制 sina.lt/bsjr 粘貼瀏覽器地址欄按回車鍵即打開)
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C#語言視頻教程 學起,話說簡單,其實我還是很多不懂的,只要重復多看幾遍,就能看懂。C#語言我差不多學了一個禮 拜,接下來我就學了winform,SQL Server,html/css/javaScript,差不多也就三個禮拜。我每天都在不 停的寫一些簡單的代碼,這樣一月後我基本掌握了aspnet的全部基礎。
接下來開始學習aspnet高級課程,老師幽默風趣而又輕松的課堂教課,使我發現原來學習aspnet並 不是一件很難的事情。之前我把aspnet基礎學得還不錯,到了到了aspnet高級部分,我覺不又不是很 難,可能老師太牛了,他能把復雜的問題講的比較通俗易懂,有些難點的地方我還是連續看了五六次, 把他弄懂。每天下午6點下班後,吃了飯,馬上跑回家。看視頻,買了幾本筆記本。當時,為了編程還花幾百元了台二手的台式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點都記下來,還一邊跟著老師敲代碼,為了能盡早學會aspnet。每天都堅持學5-6個小時。經常學到晚上一點多才睡覺。星期六,日不用上班,每天7點多起床,學到晚上11,12點。那段時間特別辛苦,特別累。在學習aspnet的三個多月里,除了吃飯睡覺工作,剩餘的時間都在學習,因為我知道自己的計算機基礎不是很好,也沒有學過什麼計算機,相對於那些科班的人來說我要比他們付出更多的努力。我只能咬緊牙關,堅持下去,我不能放棄,我要完成我的夢想,我要讓我的家人過上好日子。終於三個多月後我把aspnet教程里的內容和項目都學完了,在學項目的過程中我發現項目特別重要,他能把你學過的知識全部聯系起來,能更好的理解你所學的知識。還有學習過程中,動手很重要,要經常跟著老師動手敲,動手吧,跟著做,一行一行的跟著敲,再試著加一些自己的功能,按照自己的思路敲一些代碼,收獲遠比干聽大的多。 如果遇到暫時對於一些思路不能理解的,動手寫,先寫代碼,慢慢你就會懂了。
於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是aspnet開發程序員,但我也比較滿足,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。

…………………………………………

閱讀全文

與表單提交前過濾危險字元aspnet相關的資料

熱點內容
武威污水什麼時候可以排放 瀏覽:969
印染污水pva廢冰怎麼處理好 瀏覽:100
什麼叫有情飲水機 瀏覽:130
污水池怎麼接液位浮球 瀏覽:653
橡膠製品企業廢水 瀏覽:956
小米空氣凈化器怎麼看是否換過 瀏覽:904
水泵吸水過濾器 瀏覽:422
什麼自來水要收商鋪污水費 瀏覽:43
歐邁龍凈水器是哪裡產的 瀏覽:373
飛利浦空氣凈化器怎麼開關 瀏覽:772
共混改性脲醛樹脂 瀏覽:596
廢舊機油濾芯怎麼處理 瀏覽:575
空氣濾芯分為什麼 瀏覽:515
陶瓷過濾器怎麼換濾芯 瀏覽:885
清理飲水機用什麼消毒 瀏覽:471
機油濾芯沒密封圈會怎麼樣 瀏覽:802
聚合氯化鋁在污水中有什麼用 瀏覽:607
活性炭加超濾膜加紫外線 瀏覽:536
餐廚沼液廢水特點 瀏覽:510
世韓超濾膜 瀏覽:100