ASP.net
第一章:ASP.NET介紹
1.搭建ASP.NET開發環境;
2.理解ASP.NET運行機制;
3.掌握ASP.NET兩種編碼方式。
4.Http協議。
關鍵點:
1.BS的工作原理是什么?
2.服務器端開發技術有哪些?
Asp 、aspx、jsp、php
3.ASP.NET發展史。
4.ASP.NET的特色和優。
瀏覽器無關性、易於調試、運行效率高。 代碼邏輯分明(頁面顯示.aspx文件,業務邏輯.cs文件)
注(msIL或IL是.net框架中間語言縮寫)JIT(Just-in-time compiler)即時編譯器
5.創建一個ASP.NET程序【創建網站、編寫頁面、調試運行】。
6.解決方案組成。
7.搭建開發環境[IIS]。
8.ASP.NET程序的發布。
9.asp.net運行機制。
10.ASP.NET頁面的結構。
11.Page指令。 Page指令定義了頁面用於編譯和解析的屬性 ,每個aspx頁面只能有一個Page指令。
12.如何判斷回發和首次加載。
13.ASP.NET頁生命周期。
Page_PreInit() Page_Init() Page_Load() Page_PreRender() Page_Render() Page_Unload()
14.Web.Config配置文件的節點操作。
15.ADO.NET在ASP.NET中的使用。
第二章:頁面訪問控制
1.掌握Request和Response對象的使用;
2.掌握Session對象的使用;
3.掌握Cookie對象的使用。
4.了解Application對象。
關鍵點:
1.HttpRequest對象封裝客戶端請求頁面或提交表單時提供信息;
2.Request對象常用屬性和方法
3.ReSponse對象常用屬性和方法[ContentType、Write()、Redirect()、End()]。
4.狀態管理【Cookie存儲於客戶端、Session存儲於服務器、Application應用程序級別的狀態保持】。
Cookie特征 :存儲少量數據,存儲在客戶端,安全性差,只能存儲字符串。
Session特點:
位置:保存在服務器端,安全性高;類型:任意;Session保存的信息不與其他用戶共享;
在用戶會話期間可以記錄和監事用戶信息;當會話過期或終止時服務器會清除Session對象。
Application
Application特點:位置:服務器內存,執行速度快;使用范圍:整個應用程序;類型:任意;生命周期:從應用程序創建到銷毀。
第三章:表單和數據驗證
1.會使用控件完成頁面表單設計。
2.掌握常用第三方控件的使用。
3.會使用Page對象注冊腳本。
4.掌握驗證控件的使用。
關鍵點:
- Web控件分類【HTML控件、HTML服務器控件、Web服務器控件、用戶控件和自定義控件】。
- HTML控件和Web服務器控件的區別。
- 第三方控件【驗證碼控件】。
6.有效性驗證控制【RequiredFieldValidator非空驗證、CompareValidato用於比較控件的值、RangeValidator用於范圍驗證。RegularExpressionValidator正則表達式進行驗證的控件、CustomValidator自定義驗證、ValidationSummary驗證報告控件】。
郵箱驗證表達式:\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
第四章:搭建風格統一的Web站點
1.會使用母板頁搭頁面框架。
2.會使用導航控件完成導航功能。
3.能使用XML、手動編碼添加節點來控制樹形導航。
關鍵技術點:
1.母版頁的特別及母版頁的創建步驟。
2.獲取母版頁上控件的值【兩種方式:通過設置屬性、使用FindControl()方法】。
3.web.sitemap、SiteMapPath控件。
4.TreeView控件
第五章:系統架構搭建
1.理解三層架構在ASP.NET中的應用。
關鍵點:
1.三層架構中,各層的含議是什么?。【表示層、業務邏輯層、數據訪問層】
2.ASP.NET搭建三層架構步驟。
3.三層架構的優勢【適應變化、利於維護、適用於協作開、主流趨勢】。
4.數據庫中有主外鍵關系,模型層如何表示【兩種方式:1.為實體添加外鍵ID;2.為實體添加對象屬性。】
第六章:數據綁定與GridView
1.掌握數據綁定。
2.掌握DropDownList控件的使用。
3.掌握使用GridView控件完成數據的顯示功能。
關鍵點:
1、數據源控件【SqlDataSource、AccessDataSource、XmlDataSource、SiteMapDataSource】
2.后台綁定數據源。
3.常用的數據綁定控件【DropDownList、GridView、DetailsView】。
4.DropDowList的常用屬性和方法。
- GridView常用字段類型【BoundField、TemplateField(有五種模板:標頭、腳注、普通項、交替項、編輯模式)、ButtonField 字段、CommandField字段、HyperLinkField字段、ImageField字段、CheckBoxField字段】。
光棒效果
多選效果
6.Eval()方法和Bind()方法的區別。7.Commandname設置自定義命令。
第七章:GridView深入
1.掌握獲取GridView單元格數據。
2.掌握GridView基於單元格的更新。
3.掌握GridView常用事件處理。
4.掌握GridView中的數據刪除。
關鍵點:
- 通過行、列獲取單元格數據。
- GridView的兩個重要屬性
- 設置模板列。
- 添加命令按鈕。
5.RowEditing事件【GridViewEditEventArgs對象屬性NewEditIndex、Cancel】。
5.HiddenField控件。
- RowUpdating事件。
- RowCancelingEdit事件。
- CommandName屬性【CommandArgument:引發事件源的命令參數、CommandName:引發事件源的命令名稱。】,CommandName的值【Cancel、Delete、Edit、Selec、Update】。
單選刪除
自定義刪除
多選刪除
備注,GridView實例大全
1. 在Gridview中無須編寫后台代碼,直接實現增除刪改
2. 在Gridview中添加新記錄
3:在Gridview中實現編輯和更新操作
4:在Gridview中實現一次性更新所有記錄
5:在Gridview中固定表頭的實現
6:在Gridview中合並單元格的實現
7:在Gridview中將數據操作結果顯示在Footer中
8:在Gridview中添加表頭
9:在Gridview中將數據導出
10:在Gridview中實現數據導入
11:在Gridview中實現嵌套功能
12:在Gridview中實現多層嵌套
13:在Gridview中實現排序
14:在Gridview中實現分頁
15:Gridivew結合CheckBox控件的使用
16:Gridview結合DropDownList控件的使用
17:Gridview結合RadioButtom的使用
18:Gridview內嵌DropDownList控件
19:Gridview結合JS,在客戶端結合CheckBox的使用
20:在Gridview中設置數據行的背景顏色
21:在Gridview中設置數據行的事件
22:在Gridview中設置數據行的其他屬性
23:在Gridview中索引主鍵的使用
第八章:第三方控件的使用
1.掌握第三方控件FCKeditor、JS版日歷的使用。
2.掌握ASP.NET控件FileUpload的使用。
3.能編碼實現詳細信息頁面的更新、插入操作。
4.掌握Server對象的常用方法。
關鍵點:
- FCKeditor的配置。
n 下載FCKeditor。要下載FCKeditor2.4.2.zip和FCKEditor.NET版本的2個zi包
說明:FCKeditor2.4.2.zip是其最新的JavaScript文件和圖片。FCKeditory.NET.zip是ASP.NET調用的DLL在里面。
n 分別解壓后把FCKeditory2.4.2.zip里面的fckeditor目錄整個復制到項目中。
n 解壓FCKeditor.NET.zip包后在FCKeditor.net_2.2\bin\Debug目錄打到FredCK.FCKeditoryv2.dll。其它文件沒用,把此dll文件復制到項目中的bin目錄中。
n 引用FredCK.FCKeditorv2.dll.
第一步:
第二步:
n 導入到工具箱
在“工具箱”下右鍵
n 拖拽FCKeditor到頁面上
n 配置WebConfig
說明:BasePath是fckeditor所在路徑,fckeditor由於我們直接放網站目錄下這樣寫就可以,如果您的網站多放幾層適當調整即可。 UserFilesPath是所有上傳的文件的所在目錄。為什么要設置成/Files這樣而不是~/Files,因為FCKeditor使用這個值來返回你上傳后的文件的相對路徑到客戶端。否則的話客戶訪問的時候就會取客戶的機器目錄而不是http形式的目錄。建議:Files要單獨做wwwroot目錄下的一個站點比較好,和我們的站點FCKEditor平行。不要把它放FCKEditor里,為什么呢?因為Files是要讓客戶有寫的權限的,如果放FCKEditor下很危險。
n Files目錄要有寫的權限。你根據自己網站需求設置那個帳號,本文為方便設置User實際中你可能用ASP.NET帳號更合理。
n 修改fckeditor/fckconfig.js文件
n 下面以上傳圖片示例說明如何使用
點“瀏覽服務”
彈出窗口很容易報錯
如果報錯XML request error: Internal Server Error(500),很可能就是目錄路徑不對和寫權限沒有。
選擇圖像
最后效果
- Calendar日期控件常用屬性和事件
- JS版日歷。
l 下載最新的zip(My97DatePickerBeta.zip)
l 解壓后放到網站里面。
l 在頁面中引出js
l 效果如下
- FileUpload類的常用屬性和方法。
- Server對象常用方法
第九章:DataList與Repeater控件
1.掌握使用DataList控件顯示數據。
2.ViewSate。
3.會使用Repeater控件精確顯示內容。
關鍵點:
- DataList模板
- DataList重要屬性。
- DataList重要事件。
- ViewState頁面級的狀態保持。
- Repeater控件是一個容器控件、效率高,不會自動生成任何HTML代碼。
第十章:web站點的配置與部署
1.能夠使用Web.config存儲數據庫連接。
2.會使用站點管理工具設置站點配置。
3.能使用Visual Studio站點發布工具發布Web站點。
關鍵點:
1.ASP.NET的兩種配置文件:maching.config、web.config。2.自寫下義錯誤配置節點。3.調試和運行時的配置。4.身份驗證和授權:身份驗證方式:Windows、Passport、Form、None。5.授權:Allow允許;deny拒絕;特殊符號:“*”代表所有用戶,“?”代表匿名用戶。
第十一章:用戶自定義控件
1.掌握用戶控件的創建、使用。
2.掌握暴露用戶控件的屬性。
3.掌握自定義控件的概念。
4.了解服務器控件的生命周期人、呈現過程。
5.會從服務器控件控件派生自定義控件。
6.掌握在用戶控件中使用的自定義事件。
7.掌握自定義控件呈現頁面的方法。
8.掌握自定義控件呈現頁面的方法。
9.理解控件的視圖狀態和控件狀態。
關鍵點:
1.創建和使用用戶控件的步聚。2.用戶控件的關鍵代碼@Control批指令。3.用戶控件與頁面的區別。4.什么是自定義控件【ASP.NET自定義控件(Custom Control)是編譯的服務器端控件,它將用戶界面和其它功能都封裝到可復用的包中(dll),如驗證碼控件或FCKeditor】。5.事件的定義【定義事件消息、定義委托類型】。6.事件訪問器。7.htmlTextWriter類。
第十二章:WebService。
1.掌握Web Service的基本工作原理。
2.理解Web Service的優勢。
3.掌握Web Service的開發和使用。
關鍵點:
1.web Service是可互操作的分布式應用程序。
2.web Service使用Http和XMl進行通信。
3.Web Service可以穿越防火牆,真正實現自由通信。
4.通過Soap實現異地調用。
5.webSerivce的開發步驟
創建Web Service
一、 打開vs2013,選擇文件->新建->項目。
二、 選擇【ASP.Net空web應用程序】,將其命名為自己想的工程。
三、 然后右鍵點擊工程,添加->web服務。然后命名為自己想要的服務名稱。
四、 在asmx文件中寫出自己想要開放的WebService方法。
五、 方法寫完后,右擊項目->發布
選擇【文件系統】發布,選擇發布的物理地址,點擊【發布】即可
在發布的物理地址中會有這幾個文件。
打開IIS,右鍵點擊網站->新建網站
選擇網站名稱 ,剛剛發布的物理地址,還有發布的IP和端口,先后點完成。
然后網站就完成了。
、發布WebService、調用WebService】
第十三章Asp.Net Http管道
第十四章:Ajax
1.什么是ajax。
2.ajax的工作原理。
3.ajax包含的技術。
4.XMLHttpRequest對象。
關鍵點:
- XMLHttpRequest對象初始化。2.XMLHttpRequest對象屬性和方法【onreadystatechange、readyState、responseText、responseXML、Status、StatusText、open()、send()】3.數據格式 XML、JSON、HTML
第十五章:MVC模式
1.准備工作
l 為什么要學習ASP.NET MVC?
l ASP.NET MVC學習路線:要有c#、ADO.NET、html、javascript、ASP.Net WebForm的基礎。項目中實際用三層架構、ORM等訪問數據庫,但是這次的重點不是這些,因此我們使用SQLHelper。
l 講課使用Chrome瀏覽器,不考慮瀏覽器兼容性問題。
l 使用Visual Studio 2013、.Net 4.5、 MS SQLServer2005及以上版本。
2.課程安排
l MVC設計模式
l Razor引擎
l 控制器詳解
l 校驗
l MVC下的Ajax
l 路由
l 過濾器
l MVC高級
3.MVC模式簡介
l MVC模式兩種理解:一種是表現模式,另外一種是架構模式。它將應用程序分成三個主要組件即:視圖(View)控件器(Controller)模型(Model)
l M: Model主要是存儲或者是處理數據的組件,Model其實是實現業務邏輯層對實體類相應數據庫操作,如CRUD(create/read/update/delete)。它包括數據、驗證規則、數據訪問和業務邏輯等應用程序信息。ViewModel:視圖模型。V:View是用戶接口層組件。主要是將Model中的數據展示給用戶。ASPX和ASCX文件被用來處理視圖的職責。C:Controller處理用戶交互,從model中獲取數據並將數據傳給指定的View
4.MVC架構模式
5.ASP.Net的兩種開發方式
l WebForm的開發方式
服務器端控件
一般處理程序+html靜態頁+Ajax
一般處理程序+html模板
l ASP.Net MVC的開發方式
2009年第一個開源項目版本發布
更加開發、更多的新特點、社區活躍
不會取代WebForm
底層跟WebForm都是一樣的。管道上不同的處理而已
6WebForm VS MVC
7.WebForm請求模型
8.Asp.Net MVC請求
9.借用WebFrom理解MVC
l 新建WebFrom項目
l Label的例子:耦合在一塊
l 在page類中添加一個List
l 在前台用for循環遍歷顯示list
l 分層思想
l WebFromCodebehind偽分離還是繼承關系
l MVC 代碼和頁面徹底分離,控制器和視圖都是分別單獨的類型。耦合度最低
10.Asp.Net MVC第一個程序
l 新建一個MVC項目
l 認識Web項目中的Controller
l 認識Web項目中的View
l 認識Web項目中的Model
l 創建一個控制器HomeController,添加一個ShowDemo的方法,然后在方法中往視圖傳遞一個字符串。在ShowDemo方法上創建視圖,並在頁面中展示字符串內容。
11.控制器的約定大於配置
l Controller放到controllers文件夾中,並且命名方式以Controller結尾。
l 每個Controller都對應View中的一個文件夾,文件夾的名稱跟Controller名稱相同。
l Controller中的方法名都對應一個View視圖(非必須,但是建議這么做)而且View的名字跟Action的名字相同。
l 控制器必須是非靜態類,並且要實現IController接口。
l Controller類型可以放到其他項目中。
12.視圖的相關約定
l 所有的視圖必須放到Views目錄下。
l 不同控制器的視圖用文件夾進行分割,每個控制器都對應一個視圖目錄。
l 一般視圖名字跟控制器的Action相對應(非必須)。
l 多個控制器公共的視圖到到Shared。
13.ViewData傳遞數據載體
l ViewData是Controller的屬性,此屬性是繼承ControllerBase而來。
l ViewPage下也有一個ViewData的一個屬性。
l 控制器的Action方法執行完成后,返回ViewResult,然后MVC框架會執行ExcuteResult方法時,Controller中的ViewData數據傳遞給ViewPage類,其實就是把Controller的ViewData賦值給ViewPage頁面的ViewData屬性。
14.用戶案例
l 用戶列表頁面(創建數據、使用SqlHelper),加載用戶列表數據到頁面中。【三層、EntityFramework等不是本次課程的重點】
l 用戶注冊頁面。(校驗后面再補充)
l 目地:熟悉MVC開發的方式、MVC下的請求處理響應的模型
15.HtmlHelper詳解
l 在ASP.Net MVC中微軟並沒有提供類似服務器端控件那種開發方式式,畢竟微軟的MVC就是傳統的請求處理響應的回歸。所以之前的那種事件響應的模型,拋棄服務器端控件也理所當然。但是如果手寫Html標簽效率又比較低,可重用度比較低。
l 微軟為開發人員快速開發前台頁面提供了豐富的HtmlHelper的輔助類,輔助我們快速開發前台頁面,也提供了可擴展的接口,前台頁面的標簽可以可以做到高度可重用。
l HtmlHelper還繼承了Model元數據的校驗、ViewData和ViewBag數據綁定裝配等自動化功能,也是非常實用的功能
l HtmlHelper還提供了強類型標標簽更是在開發階段就實現編譯檢測。提高了編碼的效率。
l HtmlHelper還提供了模板編輯功能、頁面嵌套等功能,后面一一介紹。
16.HtmlHelper的演變。
l 在MVC中所有的請求都歸結到控制器下面的Action。所以所有的請求都是要指定一個具體的Action,Url的格式是根據路由規則來定的。比如,默認路由規則中定義請求的地址的格式:{Controller}/{Action}/{id},則請求的url地址應該是:http://localhost/Home/Index/1
l 我們可以看到請求的地址不再跟WebForm中的請求地址就是頁面的相對路徑。而在MVC中請求的地址是一個邏輯地址,而不是物理的路徑
l 在頁面中添加超級鏈接的時候href屬性就有了變化性。也就是當路由規則發生變化的時候,href屬性也必須跟着變化。
l 屏蔽路由規則的變化對a標簽等產生的影響,MVC給我們提供了Url.Action()方法。但是依然非常笨重。
l 最完美的解決辦法就是:HtmlHelper.Action()
17.HtmlHelper各種方法介紹
l ActionLink
生成結果:
l RouteLink
生成結果:
l Form
l TextBox,Hidden
l TextArea
l CheckBox
l DropDownList
dropDownList與TextBox等控件不同,它使用的是select標記。它需要兩個值:在下拉列表框中現實的列表,和默認選項。而自動綁定一次只能綁定一個屬性,因此您需要根據要選擇是綁定列表,還是默認選項。
DropDownList擴展方法的各個重載版本“基本上”都會傳遞到這個方法上:
如果沒有指定selectList,改方法將自動綁定列表,即從ViewData中查找name所對應的值。如果提供了selectlist,將自動綁定默認選項,即從selectList中找到Selected屬性為true的selectedListItem
例1:如果在Action方法中有如下代碼:
那么輔助方法將率先從ViewData中獲取key為list的項,如果該項為IEnumerable<SelectedListIItem>類型則綁定到下拉列表框中,否則將拋出InvalidOperationException。異常,由於第二個SelectListItem的Selected為true,則默認選中第二個。
例2:如果Action中代碼如下:
那么輔助方法將ViewData[“list”]綁定為下拉框,然后從ViewData中獲取key為selected的項,並將下拉list中Value值與該項的值相等的SelectListItem設為默認選中項。
以上兩種方法盡管可以實現DropDownList的正確顯示,但是並非最佳實踐。在實際項目中,我們更希望在代碼中使用強類型,例如上面例子中,SelectListItem的Text和Value本來就是User對象的Name和Age屬性,然而上面的代碼卻絲毫體現不出這種對應關系。如果User列表是從數據庫或其他外部資源中獲得的,我們難道還要用這種方式來綁定嗎?
這顯然是我們所無法容忍的。那么什么是最佳實踐呢?
ASP.NET MVC為DropDownList和ListBox(都在html中使用select標記)准備了一個輔助類型:SelectList。SelectList繼承自MultiSelectList,而后者實現了IEnumerable<SelectListItem>。也就是說,SelectList可以直接作為Html.DropDownList方法的第二個參數。
MultiSelectList包含四個屬性,分別為:
- Items:用於在select標記中出現的列表,通常使用option標記表示。IEnumerable類型。
- DataTextField:作為option的text項,string類型。
- DataValueField:作為option的value項,string類型。
- SelectedValues:選中項的value值,IEnumerable類型。
顯然,作為DropDownList來說,選中項不可能為IEnumerable,因此SelectList提供了一個新的屬性:
- SelectedValue:選中項的value值,object類型。
同時,SelectList的構造函數如下所示:
於是我們的代碼變為:
20.Html.Encode
21.HtmlHelper擴展
l 擴展方法的三個要素:靜態類、靜態方法、this關鍵字
l 案例:擴展自定義標簽
l 解決返回的標簽被HtmlEncode的問題
22.案例:用戶刪除和修改
l 實現用戶的刪除
l 在列表頁面添加一個修改列
l 實現點擊修改鏈接頁面跳轉的修改詳情頁面
l 實現修改頁面邏輯
l 體會雙向數據裝配:控制器的Action在執行之前會自動把請求中數據裝配到Action的方法參數里面去或者是參數的屬性里面去。控制器往視圖傳遞的數據會自動裝配到頁面的HtmlHelper生成的控制上去。
23.雙向數據的裝配
l 控制通過ViewData容器把數據傳遞到View之后,View在渲染Html標簽的時候會自動從ViewData中獲取數據進行填充標簽。
l 表單提交到控制器的時候,執行控制器的Action之前會自動將表單中的內容填充到方法的參數或者參數的屬性面去。
l 案例:用戶注冊
24.Razor引擎簡介
l 在MVC3.0版本的時候,微軟終於引入了第二種模板引擎:Razor。Razor在減少代碼冗余、增加代碼可讀性和vs智能感知方面,都有着突出的優勢。Razor一經推出就深受所有Asp.Net開發者的喜愛。
25.Razor引擎語法
l Razor文件類型:Razor支持兩種文件類型,分別是.cshtml和.vbhtml,其中.csHtml的服務器代碼使用了C#的語法,.vbhtml的服務器代碼使用了vb.net的語法。
l @字符是Razor中的一個重要符號,它被定義為Razor服務器代碼塊的開始符號
l 案例:在頁面中輸出當前日期
<span>@DataTime.Now.Tostring(“yyyy-MM-hh”)</span>
26. Razor語句塊
l 可以使用@{code}來定義一段代碼塊。
l RaZor支持代碼混寫。在代碼塊中插入Html、在Html中插入Razor語句都是可以的。
l 案例:For循環嵌套輸出html標簽
27.Razor頁面上輸出特殊字符串
l 輸出原生的字符串:@Html.Raw(html)
l 例如:@Html.Raw(“<h2>Razor</h2>”)
l HtmlString類型和MvcHtmlString類型字符串輸出
l 例如:IHtmlString html=new HtmlString("<font color='red'>文本</font>");
28.Razor引擎的注釋
l C#代碼塊可以C#自帶的注釋符合:// 、/**/等
l Razor服務器端注釋為:@* 注釋內容 *@
。
29.Razor引擎的轉換數據類型
30. CKEditor在asp.net mvc中的使用:
l 下載CKEditor http://ckeditor.com/download
l 把解壓后的目錄拷貝到Content目錄中。
l ckEditor在asp.net mvc中的使用就相當簡單了,只需要在腳本中執行CKEDITOR.replace(id);id 為你需要擁有編輯功能的textarea的id
View:
Controller:
這里要注意[ValidateInput(false)]特性,它的目的是防止在提交時報“檢測到有潛在危險的客戶端輸入值”。
l 運行后的效果圖如下:
31.控制器詳解
l 控制器的約定:必須實現IController接口、必須以Controller為結尾、必須非靜態類。
l 在Action中可以訪問HttpContext中所有的相關數據:比如Session、Cookie、也可以設置響應總之跟WebForm中Page類能做的,在Action中都能做。
l 控制器的Action的各種返回值。
32.深入講解Controller
l 職責 :Controller負責將獲取Model數據並將Model傳遞給View對象,通知View對象顯示。
l 一個Controller可以包含多個Action。每一個Action都是一個方法,返回一個ActionResult實例。
l 一個Controller對應一個XXController.cs控制文件,對應在View中有一個XX文件夾。一般情況一個Action對應一個Aspx頁面。
33.深入講解Routing
l 在項目中我們引用了System.web.Routing。
l 微軟將此項目單獨出來,並沒有開源代碼。
l Routing的作用:確定Controller 、確定Action 、確定其他參數、根據識別出來的數據,將請求傳遞給Controller和Action。
l MVC項目是URL請求驅動。
l 為什么訪問localhost/Home/Index會傳遞給HomeController中名為index的action(即HomeController類中的index方法)?怎么實現的呢?
l Global.asax.cs文件中定義了路由的識別規則
l 我們的URL:localhost/home/index
l Localhost是域名,所以首先要去掉域名部分:home/index。
l 對應了上面代碼中的這種URL結構:{controller}/{action}/{id}
l 因為我們建立了這種URl結構的識別規則,所以能夠識別出Controller是home,action是index,Id沒有則為默認值””。
MapRoute()方法
l MapRout參數介紹
Name參數:規則名稱,可以隨意起名,不可以重名,否則會發生錯誤:路集合中已經存在名為“Default”的路由。路由名必須是唯一的。
url參數:url獲取數據的規則,這里不是正則表達式,將要識別的參數括起來即可,比如:{controller}/{action}。最少只需要傳遞name和url參數就可以建立一條Routing(路由)規則。比如實例中的規則完全可以改為:routes.MapRoute(“Default”,”{controller}/{action}”)。
l defaults參數:
url參數的默認值.如果一個url只有controller: localhost/home/
而且我們只建立了一條url獲取數據規則: {controller}/{action}
那么這時就會為action參數設置defaults參數中規定的默認值. defaults參數是Object類型,所以可以傳遞一個匿名類型來初始化默認值:
new { controller = "Home", action = "Index" } 實例中使用的是三個參數的MapRoute方法:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" } // Parameter defaults );
l constraints參數:
用來限定每個參數的規則或Http請求的類型.constraints屬性是一個RouteValueDictionary對象,也就是一個字典表, 但是這個字典表的值可以有兩種:
用於定義正則表達式的字符串。正則表達式不區分大小寫。
一個用於實現 IRouteConstraint 接口且包含 Match 方法的對象。
通過使用正則表達式可以規定參數格式,比如controller參數只能為4位數字:
new { controller = @"\d{4}"}
l 通過第IRouteConstraint 接口目前可以限制請求的類型.因為System.Web.Routing中提供了HttpMethodConstraint類, 這個類實現了IRouteConstraint 接口. 我們可以通過為RouteValueDictionary字典對象添加鍵為"httpMethod", 值為一個HttpMethodConstraint對象來為路由規則添加HTTP 謂詞的限制, 比如限制一條路由規則只能處理GET請求:
l httpMethod = new HttpMethodConstraint( "GET", "POST" )
完整的代碼如下:
l routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" }, // Parameter defaults new { controller = @"\d{4}" , httpMethod = new HttpMethodConstraint( "GET", "POST" ) } );
l URL路由實例講解
對於一個網站,為了SEO 友好,一個網址的URL層次不要超過三層:
Localhost/{頻道}/{具體網頁}
其中域名第一層,頻道第二層,那么最后的網頁就只剩下最后一層了。如果使用默認實例中的”{controller}/{action}-{其它參數}”的形式會影響網站的SEO。
l URL路由實例講解。
源碼在RouteConfig.cs中
l Url實例總結
實現的功能:
(1) 訪問localhost/hotels/list-beijing-100,200-3會訪問酒店頻道的列表頁,並傳入查詢參數。
(2) 訪問localhost/hotels下面的任何其他頁面地址,都會跳轉到酒店首頁。
(3) 訪問localhost下面的任何地址,如果未匹配上面2條,則跳轉到首頁。
簡單總結:
(1) Routing規則是有順序(按照添加是的順序),如果一個URL匹配了多個Routing規則,則按照 第一個匹配的Routig規則執行。
(2) 由於上面的規則,要將具體頻道的具體頁面放在最上方,將頻道首頁和網站首頁放在最下主。
(3) {*values}表示后面可以任意的格式。
34.關於測試Routing
l 使用RouteDebug輔助類
l 在Global.asax添加如下代碼:
Protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
35.MVC驗證
l .NET框架中的System.ComponentModel.DataAnnotations命名空間包括了眾多可為您所用的內置驗證特性,介紹用最多的其中的四個:
[Required][StringLength][Range]和[RegularExpression]。
l 定義自己的定制驗證特性,然后應用它們。你可以通過繼承自System.ComponentModel.DataAnnotations命名空間中的ValidationAttribute基類,定義完全定制的特性。
l 服務器端校驗只需要在Action中校驗:ModelState.isValid屬性即可。True就是校驗通過,false反之不通過
l 要使用客戶端驗證,必須引入JS腳本支持(jquery的校驗)
l 添加語句
<%Html.EnableClientValidation();%>(MVC3、4中默認開啟)
l WebConfig中可以設置全局客氣端校驗是否開啟或關閉
36.ASPNet MVC 下的Ajax
l 使用Jquery做相關的Ajax請求
l 使用微軟提供的Ajax請求腳本。
37.過慮器詳解
l 項目大一點總會有相關的AOP面向切面的組件,而MVC(特指:ASP.Net MVC,以下皆同)項目中呢Action在執行前或者執行后我們想做一些特殊的操作(比如身份驗證,日志,異常,行為截取等),而不想讓MVC開發人員去關心和寫這部分重復的代碼那我們可以通過AOP截取實現,而在MVC項目中我們就可以直接使用它提供的Filter的特性幫我們解決,不用自己實現復雜的AOp了。
l
l ActionFilterAttribute默認實現了IActionFilter和IResultFilter。而ActionFilterAttribute是一個Abstract類型,所以不能直接使用,因為它不能實例化,所以我們想使用它必須繼承一下它然后才能使用
l 案例:Action過濾
l AttributeUsage特性用於設置標簽
l Gloable Filter允許我們設置全局過濾器。
l 異常過濾器:當我們Mvc站點出現了異常的時候會自動執行異常過濾器里面的方法。
38.區域詳解
l Asp.Net MVC 提供了區域的功能,可以很方便的為大型的網站划分區域。
l 可以讓我們的項目不至於太復雜而導致管理混亂,有了區域后,每個模塊的頁面都放入相應的區域內進行管理很方便。
l 在項目上右擊創建新的區域。
l 區域的功能類似一個小的MVC項目,麻雀雖小五臟俱全,有自己的控制器、模型、視圖、路由設置。
l 區域的路由設置是優先的。
39.頁面渲染
l 傳統的頁面嵌套都是采用iframe方式,這樣不利於SEO的優化,一般蜘蛛碰到Iframe是不進行抓取的,webForm中,采用的是用戶控制的方式,MVC 中采取頁面渲染
40.模板頁
l 模板頁必須放到共享的文件夾中。
l WebForm視圖引擎的模板頁跟之前的沒有什么區別,也就是采用母板頁。
l Razor引擎引入渲染區域的概念。
l 所有頁面啟動的時候ViewStart文件夾先執行。
l RanderBody和RenderSection
l 實例
(一) 在Shared文件夾中創建_Layout3.cshtml
(二)創建一個頁面使用次模板
補充:Json
JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。XML也是一種數據交換格式,為什么沒有選擇XML呢?因為XML雖然可以作為跨平台的數據交換格式,但是在JS(JavaScript的簡寫)中處理XML非常不方便,同時XML標記比數據多,增加了交換產生的流量,而JSON沒有附加的任何標記,在JS中可作為對象處理,所以我們更傾向於選擇JSON來交換數據。這篇文章主要從以下幾個方面來說明JSON。
- Javascrip定義Json以及解析Json
- 通過序列化,把.net中的對象轉換成JSon
補充:正則表達式
正則表達式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。模式描述在搜索文本時要匹配的一個或多個字符串。
l C#常用的正則表達式
l Js常用的表達 式。
第十六章En
Jquery
第一章認識jQuery
第二章jQuery選擇器
1. 基本選擇器
2. 層次選擇器
3. 過濾選擇器
4. 表單選擇器
第三章jQuery中的DOM操作
1.查找節點
2.創建節點
3.插入節點
4.刪除節點
5.復制節點
6.替換節點
7.包裹節點
8.屬性操作
9.樣式操作
10.設置和獲取HTML、文本和值
11.遍歷節點樹
12.CSS-DOM操作
第四章jQuery對表單、表格的操作及更多應用
1.表單應用
2.單行文本框應用
3.多行文本框應用
4.復選框應用
5.下拉框應用
6.表單驗證
7.表格應用
8.表格變色
9.表格展開關閉
10.表格內容篩選
第五章jQuery與Ajax的應用
1.Ajax的優勢和不足
2.Ajax的優勢
3.Ajax的不足
4.Ajax的XMLHttpRequest對象
5. jQuery中的Ajax 106
6. load()方法 106
7. $.get()和$.post()方法
8. $.getScript()和$.getJson()
9. $.ajax()方法 120
10.序列化元素 123
11. jQuery中的Ajax全局事件