国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ASP.NET 4.5新特性之新的模型綁定方式

ASP.NET 4.5新特性之新的模型綁定方式

2012年03月13日00:00 it168網(wǎng)站原創(chuàng) 作者: 廖煜嶸編譯 編輯:皮麗華 評(píng)論:0

【IT168 技術(shù)】ASP.NET 自推出從1.0發(fā)展到4.0以來,在每個(gè)版本都有很重要和實(shí)用的功能推出,比如在1.0到2.0時(shí)代,使用了web控件的方式大大方便了開發(fā)者的開發(fā),而在3.5中,又出現(xiàn)了很多新的功能,比如Heal Monitoring健康檢查等。在4.0版本中,借鑒了開源陣營(yíng)眾多MVC框架思想,提供了ASP.NET MVC的框架,讓W(xué)eb開發(fā)者更得心應(yīng)手的開發(fā)。

  但程序員發(fā)現(xiàn),在開發(fā)象數(shù)據(jù)模型驅(qū)動(dòng)一類的應(yīng)用時(shí),需要編寫不少代碼,有時(shí)會(huì)很復(fù)雜,借助最新發(fā)布的ADO.NET Entity Framework框架,用戶可以在對(duì)象模型轉(zhuǎn)化為數(shù)據(jù)庫對(duì)象這一步驟中減少一定的步驟和代碼量。但隨著ASP.NET 4.5的發(fā)布(目前是preview版本),在數(shù)據(jù)模型綁定這一方式上,又將有重大的變革。本文將以簡(jiǎn)單的例子講解在asp.net 4.5中這一新特性的應(yīng)用。本文的閱讀對(duì)象建議為對(duì)ASP.NET 4.0有使用經(jīng)驗(yàn)的讀者。

  ASP.NET 4.5中模型綁定

  在A SP.NET 4.5中,我們可以直接將數(shù)據(jù)模型層中的模型直接跟相關(guān)的數(shù)據(jù)綁定控件和CRUD(增刪改查操作)、分頁操作進(jìn)行綁定,但它跟ObjectDataSource控件和ASP.NET MVC中的模型綁定是有所不同的。要注意的是,asp.net 4.5 是基于.NET 4.5的,讀者可以安裝Visual Studio 2011 preview版本

  (http://www.microsoft.com/download/en/details.aspx?id=27538可以下載)。如果要對(duì)ASP.NET 4.5的新特性有全面了解,可以參考如下的這篇文章(http://www.asp.net/vnext/whats-new)。

  首先,我們來看ASP.NET 4.5中的新特性“Web表單的模型綁定”。在之前的版本中,web表單中的數(shù)據(jù)綁定,用的都是“Eval”的方法。在運(yùn)行時(shí)期間,通過調(diào)用Eval方法,利用反射的原理去處理當(dāng)前要綁定的數(shù)據(jù)對(duì)象,并讀取其中Eval方法中指定名稱的成員的值。關(guān)于為什么Eval方法的這種綁定形式是有害處的,可以參考如下這篇文章

  (http://www.devcurry.com:80/2011/02/how-to-avoid-databindereval-in-aspnet.html)。

  而在ASP.NET 4.5中,模型綁定的方式有了相當(dāng)大的改進(jìn),我們通過下面的若干個(gè)步驟,來了解新的模型綁定方式有很什么不同:

  •   Web表單的模型綁定
  •   過濾方式
  •   更新操作

  在本文中,我們使用的是Sql server 2008 R2版本,使用了其中的”Company”示例數(shù)據(jù)庫作示范,其中有兩個(gè)如下的表:

  Department表 - DeptNo (int) Primary Key, Dname (varchar(50)),Location (varchar(50)).

  Employee表 - EmpNo (int) Primary Key, EmpName (varchar(50)),Salary (int), DeptNo(int) Forwign Key.

  下面我們正式開始實(shí)做的步驟:

  1) 打開Visual Studio 2011 preview版本,新創(chuàng)建一個(gè)web應(yīng)用工程,將其命名為“ASPNET45_ModelBinding”。

  2) 在工程中,分別新增兩個(gè)文件夾,一個(gè)名為Model,一個(gè)名為Department。在Department文件夾中,新增加兩個(gè)web頁面(注意都勾選上帶master page功能),分別命名為

  Deparment.aspx和Departmentdetail.aspx。

  3) 在Model文件夾中,新增加一個(gè)ADO.NET實(shí)體對(duì)象模型,將其命名為CompanyEDMX.edmx。在其增加的向?qū)е?,注意選擇Company數(shù)據(jù)庫并選擇Department和Employee表。在創(chuàng)建完畢后,如下圖所示:

  4) 在代碼視圖中,打開Department.aspx頁面,增加一個(gè)Repeater控件,將其與Department數(shù)據(jù)模型進(jìn)行綁定。 代碼如下:


  在上面的代碼中,請(qǐng)留意跟以往版本的ASP.NET 的不同,其中,在repeater控件中,使用了ModelType屬性,指定了要將Deparment數(shù)據(jù)模型實(shí)體跟repeater控件進(jìn)行綁定。ModelType屬性在所有的數(shù)據(jù)綁定控件中,都是可以使用的。這個(gè)新特性可以允許我們?nèi)ザx那些綁定在控件中的數(shù)據(jù)類型和能讓我們?cè)诳丶薪壎P偷膶傩浴?梢钥吹剑覀儸F(xiàn)在可以不用象以前那樣,寫復(fù)雜的DataBinder.eval,而是直接通過

  就可以直接輸出數(shù)據(jù)模型Department中的屬性了?!?/p>

5) 打開Deparment.aspx.cs的代碼界面,編寫如下代碼:


  可以看到,這里實(shí)際上直接將Department數(shù)據(jù)實(shí)體模型中的數(shù)據(jù)加載并跟repeater控件進(jìn)行了綁定。其中objContext為通過ASP.NET 4.5的Entity Framework框架,自動(dòng)將數(shù)據(jù)庫中的數(shù)據(jù)實(shí)體內(nèi)容進(jìn)行了綁定,再通過objContext.Departments獲得了數(shù)據(jù)庫中Departments中的數(shù)據(jù),最后記得跟控件綁定時(shí),要使用ToList方法進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換為L(zhǎng)ist類型的數(shù)據(jù)。

  6) 直接運(yùn)行程序,可以在瀏覽器中,看到如下圖的界面,列出了所有的部門。

  7) 在上面的步驟中,我們其中需要點(diǎn)每個(gè)部門的連接,顯示該部門下的詳細(xì)情況。這個(gè)在asp.net 2.0到4.0時(shí)代,我們常用的方法是DetailsView和FormView控件進(jìn)行增刪改查操作,而在asp.net 4.5時(shí)代,其gridview,formview,detailsview控件則提供了如下的屬性方法,方便進(jìn)行CRUD等操作

  SelectMethod: 選擇數(shù)據(jù)的方法,返回的數(shù)據(jù)類型是IEnumarable

  InsertMethod: 進(jìn)行插入相關(guān)操作

  UdateMethod: 進(jìn)行更新的相關(guān)操作

  DeleteMethod: 進(jìn)行刪除的相關(guān)操作

  8) 對(duì)DepartmentDetails.aspx進(jìn)行修改操作如下:


  注意這里用AutoGenerateEditButton和AutoGenerateInsertButton分別產(chǎn)生了編輯和插入的按鈕。

  9) 修改DepartmentDetails.aspx.cs代碼如下


  現(xiàn)在請(qǐng)仔細(xì)閱讀上面的代碼,注意的是上面的所有方法中,都跟前端的界面沒有任何關(guān)系了,也就是說代碼中沒涉及任何前端界面的內(nèi)容。比如在GetDepartment方法中,注意使用了[QueryString] int DeptNO的方式,自動(dòng)獲取了DeptNo的值,并會(huì)顯示在DetailsView、表單中,而在以前的asp.net 版本中,必須使用 Request.QueryString[“DeptNo”]的方法獲得。此外,請(qǐng)留意在三個(gè)方法中,是如何通過LINQ的方法獲得department的實(shí)體對(duì)象,以及在UpdateDepartment和InsertDepartment方法中,是如何簡(jiǎn)單直接對(duì)實(shí)體進(jìn)行增加和更新的。

10)打開site.master文件,修改如下:


  11) 運(yùn)行程序,這次點(diǎn)每個(gè)department后,會(huì)跳轉(zhuǎn)到departmentdetails.aspx的詳細(xì)頁,如下所示:

  可以看到,這里在detailsview中,自動(dòng)顯示了deptno的值,并且有默認(rèn)的edit和new兩個(gè)連接,用于編輯和新增數(shù)據(jù)。

  篩選數(shù)據(jù)

  接下來,我們看下如何篩選數(shù)據(jù)。

  在asp.net 4.5中,提供了System.Web.ModelBinding的命名空間,這個(gè)命名空間中包括了一些如ControlAttribute,QueryStringAttribute等類,這些類都是繼承自ValueProviderSourceAttribute。這個(gè)基類是用來定義方法參數(shù),用來指定用于模型綁定的值的來源。換句話說,這意味著傳遞到方法中的參數(shù)指定了要篩選記錄的值是什么,以及值的來源是什么,比如來自控件還是QueryString。

  下面我們繼續(xù)以實(shí)做例子來講解相關(guān)的步驟。

  1) 使用Visual Studio 2011 新建立一個(gè)web工程,命名為ASPNET45_ModelBinding,增加兩個(gè)文件夾Model和Employee。

  2) 在Model文件夾中,增加一個(gè)ADO.NET Entitiy Framework框架向?qū)傻哪P?,命名為CompanyEDMX.edmx,使用的是SQL SERVER 2008 R2,數(shù)據(jù)庫為company,建立如下的兩張表結(jié)構(gòu):

  Department - DeptNo (int) Primary Key, Dname (varchar(50)),Location (varchar(50)).

  Employee - EmpNo (int) Primary Key, EmpName (varchar(50)),Salary (int), DeptNo(int) Foreign Key.

  在向?qū)瓿珊螅瑢⑸扇缦聢D的數(shù)據(jù)模型圖


 3)在Employee文件夾中,新建一個(gè)web頁面(注意選上包括master模版頁),命名為Employee.aspx,增加一個(gè)dropdownbox和一個(gè)gridview,并且設(shè)置相關(guān)的屬性列表如下:


  整個(gè)頁面代碼如下:


  4) 打開Employees.aspx.cs,增加如下代碼


  注意,在GetEmployees方法中,返回的類型為IQueryable,接收的參數(shù)為Deptno。這里注意使用了[Control]屬性類,這個(gè)類的構(gòu)造函數(shù)中,其參數(shù)定義了要接收的控件的ID。在這個(gè)例子中,源控件是DropDownList,其id名為ddlDeptName。GetEmployees方法則接收了DeptNo參數(shù),并且通過LINQ的方式,根據(jù)DeptNo參數(shù),篩選出相關(guān)的數(shù)據(jù)。

  另外一個(gè)注意點(diǎn),是在GridView中,設(shè)置了AllowPaging屬性為true。在早期的asp.net 版本中,必須還是要寫一點(diǎn)代碼來進(jìn)行分頁,但是在asp.net 4.5時(shí)代,已經(jīng)完全是零代碼了,因?yàn)橹灰祷氐臄?shù)據(jù)集的類型為IQueryable,則自動(dòng)綁定后的Gridview會(huì)進(jìn)行自動(dòng)分頁。

  運(yùn)行以上代碼,會(huì)看到如下圖的結(jié)果,可以在下拉框中選擇不同的部門類別進(jìn)行數(shù)據(jù)篩選。


  本文的代碼可以在如下地址下載獲得:http://www.dotnetcurry.com/Uploads/ASPNET/ASPNET45_ModelBinding.zip

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
初識(shí)Asp.Net MVC2.0【續(xù)】
asp.net 取得用戶控件里的屬性或控件
ASP.NET下< %%>幾種用法的區(qū)別講解
ASP.NET vs ASP——編譯與解釋的區(qū)別
ASP.NET 2.0 internals[translate from msdn by darwin_yu]
ASP.NET的網(wǎng)頁代碼模型及生命周期
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服