【筆記——ASP.NET基礎知識(一)】

來源:互聯網
上載者:User

寫在前面:
通過幾天 的面試發現一個規律,對於還沒有畢業的大學生來說,擁有多少項目經驗 不是企業最看重的,企業更看中的是對基礎知識的掌握程度,萬丈高樓平地起,現在我就總結一下這方面的基礎知識,也當做學習筆記吧!

  1. WebSite和WebApplication的區別
    1)當改變後台代碼時,WebApplication需重啟瀏覽器或者重建解決方案,而WebSite則不用;
    2)WebSite沒有Solution,沒有namespace,不利於工程化開發。
  2. HTTP的工作方式是什嗎?
    1)用戶端提交表單請求處理 Request
    2)伺服器端處理常式進行處理 Handle
    3)服務端相應        Response
    注意:提交到伺服器的表單元素一定要添加name屬性,因為伺服器只認name,這一點和Jquery、DOM不一樣,它們只會識別id.
  3. Form的method屬性指定表單的提交方式的問題 *
    1)get(預設值)是通過地址欄的URL顯式地傳遞表單;
    post傳遞的表單值是隱藏在Http報文中,URL地址欄中是看不到的;
    2)get傳遞值的數量是有限的,會受到地址欄長度的影響,好像最大是2K個位元組,而post則沒有限制。
    3)post當重新整理頁面時,會有瀏覽器提示重新提交表單的對話方塊,而get則沒有。
  4. DIV中的內容不會提交給伺服器?
    只有給div設定了name屬性的value值(如input、textarea、select等)才會被提交到伺服器
  5. ViewState原理
    1)隱藏一些欄位,用來存放那些沒有value屬性值的控制項
    2)因為http是無狀態的協議,所以當頁面發生改變的時候,會用viewstate保持頁面上一次的狀態。
    3)例如:label控制項被瀏覽器渲染成<span>標記,所以label的值就存在了viewstate中;
    同理,textbox控制項也被瀏覽器渲染成了input標記,TextBox中的值不用存,因為TextBox本質上就是input,input自己會提交給伺服器,不需要隱藏欄位。
    4)可以通過ViewStateDecoder工具查看viewstate中的容的本來面目。
  6. 狀態資訊儲存在隱藏欄位中(viewstate)的優缺點
    1)加大網站流量
    2)降低訪問速度
    3)機密資料放到表單中會有資料欺騙等安全性問題(如網銀等)。*
  7. 所有的背景程式實現的都是IhttpHandler介面
  8. Cookie和session都是用來存放當前用戶端的相關資料,
    cookie存放在用戶端,session存放在伺服器端。
    注意:session中不能儲存太大的資料,它存的是object類型的資料,所以使用時需要進行類型裝換。
  9. http請求報文時,頁面中的每類元素,如img、js、css等檔案都是單獨請求的。這一點可以通過開發人員工具或者大名鼎鼎的Firebug查看。
    *http是"無狀態"的協議,所以它不會記得上一次做過什麼,不會記得上次給瀏覽器發過**資訊,所以當它下次重新請求時,img、js、css等檔案會重新發來header資訊。
  10. get是通過url地址欄傳送的參數顯式地傳遞的,如: ?a=123&b=abc
  11. post是不通過url傳值的,但是它在後台悄悄地傳送資料 ,用__VIEWSTATE隱式地傳送。
  12. HTTP各種狀態代碼 含義
    1)200系列,表示請求成功,OK
    2)300系列,如307,表示伺服器重新導向,需要對請求做進一步處理;
    3)400系列,如404,表示頁面未找到,file not found.
    4)500系列,表示內部伺服器錯誤。
  13. 後台寫刪除按鈕提交事件是,要在Button控制項中的OnClientClick屬性中加上
    <input type="submit" name="delete" value="刪除" OnClientClick="return confirm('確定要刪除嗎?')" />
    可以在用戶端提示友好地操作者,以免進行不必要的刪除。
  14. 127.0.0.0是迴環地址,表示訪問本機,不經過網卡,無法在外地訪問,別名為localhost。
    0.0.0.0 表示任意IP,AnyIP.
  15. 將Html、js轉換為普通一對一字元
    HttpUtility.HtmlEncoder(string s) // 轉換為特殊字元,例如:小於符號<轉為&lt; 大於符號> 轉化為&gt; 空格符轉換為&nbsp;
  16. /表示網站的根目錄;
    ..表示上級目錄;
    .表示目前的目錄;
    ~特殊路徑,只用於伺服器控制項中,表示從應用的根目錄開始定義。
  17. 將虛擬路徑轉化為全路徑,絕對路徑
    VirtualPathUtility,ToAblolute("~/a/b.html");    // 轉換為 /WebSite/a/b.html
  18. 服務端控制項必須用post方法提交form。
  19. 可以利用ClientID擷取用戶端控制項的ID,
    getElementById('<% =TextBox1.ClientID %>');    
    並不是每個服務端控制項的ID和用戶端的控制項ID都一樣,例如:在使用者自訂控制項(WebUserContrl.ascx)中服務端控制項的ID會和用戶端的ID不一樣。
  20. 服務端控制項label會在用戶端渲染成<span>, 如果設定AssociateControlID屬性為TextBox1,在用戶端則會渲染成 <label for="TextBox1" . . ./ >,實現關聯控制項獲得焦點。
  21. Literal控制項在用戶端什麼都不渲染,以純文字的形式展現。
    當設定其Mode屬性為EnCode時,該控制項會自動實現HttpUtility.HtmlEncoder(string s)轉換,有時候很方便,同時可以避免XXS攻擊。
  22. TextBox控制項
    1)設定TextMode屬性為SingleLine,會渲染成 <input type="text" />
    2)設定TextMode屬性為MultiLine,會渲染成 <textarea />
    3)設定TextMode屬性為Pasword,會渲染成 <input type="password" />
    4)當設定AutoPostBack 屬性為true時,使用者焦點離開TextBox就會造成頁面的post;提交表單時最好用__doPostBack的js方法。

    寫在後面:知識雖然基礎,但卻實用,不要羨慕別人寫好的酷炫至極的js效果就去盲目跟風。三天打魚兩天晒網更是不可取,學習貴在堅持,沒有人的智商高到不用學習就能會的,愚公移山、夸父追日的精神值得我們學習!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.