高級開發(fā)班代碼等提高班asp net其他_第1頁
高級開發(fā)班代碼等提高班asp net其他_第2頁
高級開發(fā)班代碼等提高班asp net其他_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余3頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、如鵬網(wǎng).Net 提高班 mvc 其他課件 Html 輔助方法1、HtmlHelper 簡介 mvc 中還提供了一些 HtmlHelper(Html 輔助方法),可以簡化表單的編寫。現(xiàn)在已經(jīng)是 Ajax 做頁面的了,連 cshtml 都用的越來越少了,特別是用 HtmlHelper 對于美工和程序員分工很不好,所以我不推薦使用。但是總是有公司特別是一些做企業(yè)內(nèi)部系統(tǒng)的公司還在用 HtmlHelper 的,所以還是要了解一下。Html 是 HtmlHelper 類型的成員,可以在 cshtml 中使用。表單:using (Html.BeginForm("Login","

2、;Default")生成:<form action="/Default/Login" method="post"></form>HtmlHelper 的方法有N 多重載方法,根本記不住,隨用隨查定義就行。2、TextBox Html.TextBox("name") 會生成:<input id="name" name="name" type="text" value="" />還可以賦值: Html.TextBo

3、x("name","hello") 生成:<input id="name" name="name" type="text" value="hello" />3、LabelHtml.Label("UserName", "用戶名:")Html.TextBox("UserName")會生成<label for="UserName">用戶名:</label><in

4、put id="UserName" name="UserName" type="text" value="" />還有復(fù)選框、單選框、TextArea 等玩意,研究一下就行了。4、自定義屬性使用 HtmlHelper 之后,怎么搞的屬性呢?HtmlHelper 中所有方法都有一個(gè) objecthtmlAttributes 參數(shù),這個(gè)參數(shù)可以傳任意對象進(jìn)去會把每個(gè)屬性的名字和值輸出到中,為了方便一般傳遞一個(gè)類對象進(jìn)去( mvc 中講過):Html.TextBox("name","h

5、ello",new abc=123,haha=false,yes="rupeng")生成:<inputabc="123"haha="False"id="name"name="name"type="text"value="hello"如鵬網(wǎng).Net 提高班 mvc 其他課件 yes="rupeng" />class 是 C#關(guān)鍵字,不能用作屬性名字,怎么辦?用class。Html.TextBox("name

6、","hello",new class="warn")生成:<input class="warn" id="name" name="name" type="text" value="hello" />生成v-id=”這樣的都會轉(zhuǎn)換為連字符怎么辦?-是C#中的特殊字符。用下劃線代替所有下劃線的屬性Html.TextBox("name","hello",new class="warn&qu

7、ot;,v_id=5)轉(zhuǎn)換為:<input class="warn" id="name" name="name" type="text" v-id="5" value="hello" />5、表單驗(yàn)證Html.ValidationSummary()會把提交后表單的驗(yàn)證錯(cuò)誤消息匯總顯示.cs:public classDisplayName("用戶名") Required StringLength(8)public string UserName

8、get; set; DisplayName("Required StringLength(8)")public string Password get; set; Index.cshtml:using (Html.BeginForm("Login","Default")<span>用戶名:</span>Html.TextBox("UserName")<span>:</span>Html.Password("Password")<input t

9、ype="submit" value="提交"/> Html.ValidationSummary()DefaultController.cs:public ActionResult Index()return View();public ActionResult Login(m)如鵬網(wǎng).Net 提高班 mvc 其他課件 if(!MState.IsValid)return View("Index");/一定要返回表單原始頁面return Content(m.UserName);如果字段比較多,匯總消息顯示不合適,那么就用Html.

10、ValidationMessage("UserName") 值只顯示 UserName 屬性相關(guān)的錯(cuò)誤信息。還可以在 Action 中寫 MError("UserName", "不知道為啥,感覺有點(diǎn)錯(cuò)State.AddM");添加自定義錯(cuò)誤消息,也可以寫 M ");搞和屬性無關(guān)的錯(cuò)誤消息。State.AddMError("", "不知道為啥,感覺有點(diǎn)錯(cuò)驗(yàn)證消息的定義了樣式名字,需要項(xiàng)目自定義樣式文件。6、隱式從 ViewBag 取數(shù)據(jù)如果在 ViewBag/ViewData 中放數(shù)據(jù),那么 Ht

11、mlHelper 可以隱式從 ViewBag 中取數(shù)據(jù):ViewBag.UserName = "admin" Html.TextBox("UserName")DropDownList 的數(shù)據(jù)也可以來自于 ViewBag: Book books = new Book new Book Id=1,Name="如鵬網(wǎng)", new Book Id=2,Name="騰訊", new Book Id=3,Name="天貓"SelectList slBooks = new SelectList(books,&

12、quot;Id","Name",2); ViewBag.books = slBooks;Html.DropDownList("books")不建議用這個(gè)特性,只要知道有這東西,避免進(jìn)坑就行了。7、強(qiáng)類型視圖綁定對于強(qiáng)類型視圖,可以使用 Html.*For 方法,傳遞 lambda 表達(dá)式,避免編譯錯(cuò)誤mWebApplication6.Ms.Book<!DOCTYPE html><html><head><meta name="viewport" content="width=

13、device-width" /><title>Index1</title></head><body>如鵬網(wǎng).Net 提高班 mvc 其他課件 <div>Html.Label("Id"):Html.TextBoxFor(m=>m.Id)<br/> Html.Label("Name"):Html.TextBoxFor(m => m.Name)<br /></div></body></html>8、數(shù)據(jù)客戶端驗(yàn)證使

14、用 asp net mvc 的完整模板。 只要頁面中引入 jquery.validate.js 和jquery.validate.unobtrusive.js(在 asp net mvc 模板中有),那么把這兩個(gè)文件引入頁面,然后會自動啟用客戶端校驗(yàn),服務(wù)器端校驗(yàn)當(dāng)然還會繼續(xù)有Index.cshtml 內(nèi)容:mWebApplication7.Ms.UserMusing (Html.BeginForm("Login","Home")Html.LabelFor(m=>m.UserName,"用戶名")Html.TextBoxFor(

15、m=>m.UserName)Html.ValidationMessageFor(m=>m.UserName)<br/>Html.LabelFor(m=>m.Password,"Html.ValidationMessageFor(m => m.Password)<br />")Html.TextBoxFor(m=>m.Password)<input type="submit" value="提交"/>public ActionResult Login(UserMm)if(

16、!MState.IsValid)return View(nameof(Index);return Content(m.UserName);原理:服務(wù)器端根據(jù)參數(shù)的服務(wù)器端校驗(yàn)規(guī)則在客戶端生成這樣的驗(yàn)證:data-val="true"data-val-length=" 字段 UserName 必 須 是 最 大 長 度 為 8 的字符串 " data-val-length-max="8"data-val-required="UserName 字段是必需的"。jquery.validate.js 在客戶端這些。明白了這

17、個(gè)原理,即使不適用 HtmlHelper,咱們也可以在的頁面中用 jquery.validate.js。如鵬網(wǎng).Net 提高班 mvc 其他課件 路由1、 路由的作用:1)分析 url,拆解出 url 中的內(nèi)容。路由不負(fù)責(zé)“找 Controller、找 Action”! 2)生成 Url 用;2、默認(rèn)的路由我們開發(fā)項(xiàng)目的時(shí)候一般默認(rèn)的路由就足夠了,如果自定義路由通常是不想用默認(rèn)的 Url默認(rèn)路由是:。routes.MapRoute(name: "Default",url: "controller/action/id",defaults: new cont

18、roller = "Home", action = "Index", id = UrlParameter.Optional );name 只是一個(gè)標(biāo)志名字而已;url 相當(dāng)于定義了一個(gè)類似于正則表達(dá)式的匹配模式:由/分割三部分,第一部分提取成一個(gè)名字叫 controller 的數(shù)據(jù),第二部分提取成一個(gè)名字叫 action 的數(shù)據(jù),第三部分提取成一個(gè)名字叫 id 的數(shù)據(jù);defaults 部分可選,如果指定表示,如果部分內(nèi)容,那么每個(gè)部分的默認(rèn)值是什么, defaults 一般用類對象, 屬性的名字和 url 中定義的名字一致,UrlParameter.O

19、ptional 表示這部分可以不指定。這樣當(dāng)我們請求/Home/Index/5 的時(shí)候,就會拆解成 controller=”Home”、action=”Index”、id=5, 然后接下來MVC 引擎會找到HomeController 類的Index 方法去執(zhí)行,并且給id 參數(shù)傳遞5。controller、action 屬于兩個(gè)特殊的名字,用來對應(yīng) controller 類和 action 方法,屬于必須的,否則就找不到對應(yīng)的controller 類和 action 方法,其他名字隨意。3、 改動一下默認(rèn)路由如果我們把 url 改成 url: "id/action/controll

20、er",那么地址就要改成/3/Index/Home 才能正確的。如果我們把 url 改成 url: "aa/rupeng/id/action/controller" , 那么地址就要改成/aa/rupeng/3/Index/Home 才能正確的。注意路由 URL 不能以“/”或“”字符開頭,并且不能包含“?”字符,所以路由規(guī)則中不能對于querystring 做匹配。為什么 url: "controller/action/id"來講,/、/Home、/Home/Index 都能到 publicActionResult Index()。因?yàn)樵O(shè)定了

21、 defaults,他們都有默認(rèn)值,如果沒有指定,則用默認(rèn)值來代替。所以 defaults 設(shè)定的不像有些人是你設(shè)定的匹配值,他只是默認(rèn)值。新增 Action 方法:public ActionResult Test2(string name,int id)return Content("name="+name+",id="+id);路由規(guī)則設(shè)置為:url: "controller/action/id/name"然后可以通過/Home/Test2/33/abc如鵬網(wǎng).Net 提高班 mvc 其他課件 如果我們/Home/Test2/33/abc/asdfa,就會匹配不到任何路由。路由規(guī)則不一定用/做分割,比如:url: "controller-action" 就可以用/Home-Index但是路由規(guī)則不能讓別人無法拆分,比如設(shè)置成如下就不行 url: "controlleraction" 4、 多路由規(guī)則可以指定多個(gè)路由規(guī)則,只要 name 不一樣就行,當(dāng)一個(gè)請求過來的時(shí)候,會從上向下匹配,碰到一個(gè)能匹配的就結(jié)束了,繼續(xù)向下走,如果所有規(guī)則不匹配的話則報(bào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論