今天學習總結了一些相關概念和知識。javascript
以前不管是作 單機的winform 仍是 CS的winform 感受,不到兩年下來感受還能夠,雖然API有不少,可是仍是比較熟悉基於WINDOWS消息機制的編程,可是如今網絡硬件設施更新之快,BS 開發優點之大,不過須要的技術方面卻是得擴寬許多,JavaScript,CSS,Html都須要瞭解掌握,除webForm以外,對於現今主流的MVC更是須要學習。css
概念:html
asp.net控件服務端控件 --> 響應服務端事件
HTML控件客戶端控件 -- > 響應客戶端事件
HTML客戶端事件是不會提交給服務端的,比說點擊按鈕,改變文字顏色等,只是針用戶機器自己,是不會發送數據包給遠程服務器的
而 asp.net按鈕點擊以後,將會以post或者get形式發送給服務器,進行數據庫操做等等,頁面提交以後將會刷新。
可是ajax技術使客戶端控件發送請求給webservice java
現象獲取用戶輸入到文本框中的內容:jquery
服務器端控件:string s=Textbox1.text;程序員
html控件:string s=request.querystring["text1"]; //text1爲參數web
另:ajax
<input type="text" name="name" ><input type="button" value="肯定">
定義一個變量經過request.getParameter("name")取得,其中name 是標籤名稱
另外在javascript中能夠
先在標籤里加上一個id 如<input type="text" name="name" id="name">
再經過document.getElementById("name").value 取得標籤中的值
===========================================================
獲取文本框中的內容有如下兩種方法:數據庫
假設爲以下文本框:編程
<input type="text" value="" id="text">
一、原生JS獲取文本框的值:
document.getElementById("text").value //text爲文本框的id
二、jquery獲取文本框的值:
$("#text").val()
============================================================
Web服務器端控件和Html控件 關係
HTML 頁面的擴展名是 .htm 或 .html。假如瀏覽器從服務器請求某張 HTML 頁面,服務器不進行任何修改,就會把該頁面發往瀏覽器。
ASP.NET 頁面的擴展名是 .aspx。若是瀏覽器請求某張 ASP.NET 頁面,那麼在把結果發回瀏覽器以前,服務器首先會處理頁面中的可執行代碼。
最終瀏覽器仍是會由html輸出,服務器控件的頁面訪問速度比html的要慢的多。asp.net以頁面一遍遍刷新html的形式,這就決定了他的機制很慢。並且越是追求對程序員友好、功能強大,那麼其性能問題越是嚴重。
一句話:服務器控件是封裝好了html控件。 服務器控件經過ViewState維持狀態,而HTML沒有,若是沒有交互的,能夠直接用HTML控件。
服務器端控件都會有個runat="Server"屬性,
這樣纔可以在後臺對其進行設置修改,
也就是在cs代碼裏面能對其修改設置。
可測試 放個HTML控件 在CS代碼是引用不出控件名的
而後HTML控件加上runat="Server" 在CS代碼就能引用該控件了
本質上ASP.NET 的服務器控件 解析後返回到前臺仍是HTML控件
建個頁面 放一個asp:textbox上去
而後運行頁面,而後查看頁面源文件
會發現放上的服務器控件變成了HTML的inupt type="button"
<asp:Button width="7%" ID="btnupdate" runat="server" Text="Update" CssClass="trcss_tot1" OnClick="btnupdate_Click" />
順便說一下VIEWSTATE:
因爲HTTP鏈接屬於無狀態的,每次頁面請求都沒法記錄上次請求頁面的信息。
那麼要保存上次請求頁面上控件的值,也就是頁面刷新後,填寫的值不變,比方在textbox填了個‘a’,頁面刷新後仍是'a',.NET框架爲實現這種機制,因而就用到了viewstate視圖狀態來保存這些控件的值,
那麼將全部控件的值存在什麼地方呢?能夠運行程序,而後在頁面中查看源文件,就能夠看到一個input type="hidden" name="__VIEWSTATE"的標籤,這個就是所謂的」視圖「,它是通過服務器序列化過的,而後服務器接收後會反序列化這些隱藏域的值而後又從 新給這些控件賦值,從而頁面刷新後還能記錄上次請求時候的全部控件的值。服務器控件都會默認保存VIEWSTATE的 有個屬性(EnableViewState)能夠設置的, 設置爲Flase就不保存了,頁面刷新後,值也就沒了,能夠作個測試放個textbox設置EnableViewState爲false,而後輸入個 值,而後再用按鈕去刷新頁面,那麼textbox會爲空,由於沒有視圖狀態記錄到上次輸入的值。
服務器端控件&html控件的使用問題
先說下:服務器端控件僅僅是微軟爲了方便一些入門開發者封裝了一些html控件,因此說服務器端控件的根源來源於html控件,只不過在這控件基礎上加入了一些封裝的css\js以及開放一些供別人設置的接口而已。
因此說html控件趨勢被取消掉那是絕對不可能的。取消了。就沒有了Web存在的意義。要說取消趨勢也是服務器端控件。
服務器端控件的發展趨勢,從這幾年來看,排斥的人愈來愈多,爲何?
1.設置樣式很是不方便,(不是說不能設置樣式),而是不直接。
2.多數普通人員是不懂得怎麼針對服務器端控件進行優化----如是否取消ViewState,是否須要這個控件進行postback,總之常常會看到這些人員作的網頁源代碼比普通html控件開發人員要多至少一輩的垃圾代碼。不只性能很差提高,也驗證影響SEO優化。
3.編寫對應的一些javascript不方便。每次都要獲取真正的服務器端ID,若是要將javascript寫在js文件中,那是一種惡浩,你得變通採用非ID的方式或其餘方式進行聲明。繁瑣
4.從微軟目前的技術趨勢來看,逐漸拋棄服務器端控件開發也是一種主流。固然選什麼仍是要看你的項目來決定,有的開發公司天生就爲了速度,拖拉服務器控件進行快速開發也是沒啥好說壞與好。
推薦本相關參考與優秀博客:http://blog.csdn.net/lxfzgg/article/details/8467232