ASP.NET 進階編程基礎第一篇—基礎介紹

來源:互聯網
上載者:User

    前言:從今天起我將寫一個這樣的系列,當然我主要是從最簡單的方面去介紹的哦!

  1. Web應用程式和網站

(1) WebApplication(Web應用程式)和WebSite(網站)的區別?WebSite是為了相容從ASP轉過來的開發人員的習慣而存在的,用起來簡單,比如不需要建立命名空間,cs代碼修改後不需要重啟就可以看到變化(無論是WebSite還是WebApplication,修改aspx都不需要重啟),但是不利於工程化的開發,比如代碼出錯不容易發現,代碼不分命名空間,開發技術上沒有任何區別,只是開發,調試習慣不同而已。

  1. 基於ashx方式的asp.net開發

(1) 建立一個Html頁,命名為:hello1.Htm

1 <form action="hello.ashx">2 3         <input type="text" name="username" />4 5         <input type="submit" value="提交" />6 7     </form>

 

 (2) 建立一個【一般處理常式】Hello1.ashx,ProcessRequest中寫入:

   

1 string username = context.Request["username"];2 3 context.Response.Write("hello world," + username);

 

 (3) 每當使用者請求訪問ashx頁面的時候,ProcessRequest方法就會被調用,在這裡通過訪問context.Request獲得訪問者的請求參數等,然後在ProcessRequest中通過context.Response向瀏覽器發回資料給瀏覽器,ProcessRequest結束之時就是伺服器為這個瀏覽者本次訪問服務完成之時。

(4) 瀏覽器向伺服器端提交資料,被提交資料的表單(input,select,textare等)放到Form中通過action屬性設定表單被提交到那個頁面,為了在伺服器端取出來表單項的值,需要在HTML中為表單元素設定Name屬性,注意ID是給JS操作和Dom操作用的,name才是提交給伺服器的,在伺服器端用context.Request[“UserName”]來根據表單項的name來獲得提交的屬性值,通過context.Response.Write向瀏覽器輸出處理後的顯示HTML內容。

  1. 一段Jquery代碼的複習

  

1 $(function(){2 3         $(“#TextBox”).mouseover(function(){4 5                $(this).CSS(”Color”,”Red”);6 7 });8 9 });

 

註解:此段代碼實現的功能是當滑鼠離開控制項是將控制項中的字型顏色設定為紅色。

  1. “返回”提交頁面改進版

(1) 為了請求,返回的內容一樣,將頁面儲存為1個Htm模板文本,模板中有一些待填值的預留位置,第一次進入頁面的時候就直接存取ashx,讀取Html模板,將待填值預留位置設定為空白,然後輸出到瀏覽器。

(2) 為了區分是第一次直接進入頁面還是點擊提交以後重新進入ashx,在Form中增加一個隱藏欄位;<input type=”Hidden” name=”ispostback” value=”true”>,如果能夠從Request中讀取到ispostback=true就說明是點擊提交以後重新進入ashx,負責就是第一次進入ashx。

(3) ASP.NET中將Web虛擬路勁(/images/1.jpg)轉換為磁碟全路徑(d://www.mysite.images/1.jpg)的方法是HttpContext.Current.Request.MapPath(“/1/入門2.htm”)。

(4) 實現思路是:在ProcessRequest中首先從Request中讀取ispostback,如果讀取到true,說明是提交進入的,就載入模板,並且進行預留位置用計算後的值替換,否則就將模板中的預留位置清空直接輸出給瀏覽器。

(5) 剛進入Hello2.ashx的時候是直接向瀏覽器輸出內容,使用者在輸出的內容中填入數值,再點擊提交,伺服器就知道提交回來了。(postback)

(6) 文字框上次輸入的值在提交表單後有顯示出來並不是理所當然的,是開發人員幫著讀取提交上來的值然後渲染上去的。這就是asp.net和cs的關係,用aspx重寫這個程式,使用ispostback等屬性,對比。

(7)http是請求,響應的模型,伺服器不會來讀取瀏覽器的網頁,能夠得到的就是用戶端網頁提交過來的資料。

  1. Get和Post

(1) 還可以設定form的method屬性指定表單提交方式,get(預設值)是通過URL傳遞表單值,post傳遞的表單值是隱藏到http報文中的,URL中看不到。

(2) get和post的區別:get是通過URL傳遞表單值,post通過URL看不到表單域的值,get傳遞的資料是有限的,如果要傳遞大資料量不能用get,比如:type=”file”上傳文章,type=”password”傳遞密碼或者<textarea>發表大段文章,post則沒有限制,post會有瀏覽器提示重新提交表單的問題,get則沒有,對於post的表單重新敲地址欄目重新整理就不會提示重新提交了,因為重新敲地址欄就沒有重新提交資料了。

(3) get方式url資料格式。伺服器檔案名稱後跟著”?”,由於用戶端可能向伺服器提交多個索引值對,索引值對之間用”&”進行分割,如果url中有漢字,特殊符號等,則需要對URL進行編碼。

(4) 表單域只是設定了name的才會被提交給伺服器(用gei方式看的清楚)。如果給submit按鈕設定name,那麼按鈕的value也會被提交給伺服器。

驗證代碼為:

       

 1   string fullpath = context.Server.MapPath("Hello.htm"); //得到檔案的全路徑 2  3         string content = System.IO.File.ReadAllText(fullpath); 4  5         //context.Response.Write(content); 6  7         string ispostback = context.Request["ispostback"]; 8  9         if (ispostback == "true")10 11         {12 13             context.Response.Write("提交進入");14 15         }16 17         else18 19         {20 21             context.Response.Write("直接進入");22 23         }24 25 <form action="hello1.ashx">26 27     <input type="hidden" name="ispostback" value="true" /><!--這是一個隱藏欄位-->28 29     姓名:<input type="text" name="UserName" />30 31     <input type="submit" value="提交" />32 33 </form>

 

聯繫我們

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