成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鮮為人知的ASP.NET MVC 2.0框架高效之謎

原創
開發 后端
在本篇文章中,我將向你演示如何使用MVC 2.0框架創建一個ASP.NET Web應用。ASP.NET MVC 2.0是微軟最新版框架,可以創建運行在.NET框架2.0、3.0或3.5上的Web應用。

【51CTO獨家特稿】要想建立開發環境,你需要安裝Visual Studio 2008/2010 Beta 2,以及SQL Express 2005(可免費從MSDN下載)和MVC 2.0框架。我把本文中的示例Web應用命名為“Employee Master Information”。51CTO-.NET頻道向您推薦《ASP.NET MVC框架視頻教程》以便于您更好的理解本文。

使用該應用程序,你可以輸入新員工數據,編輯現有員工數據,可以查看特定員工數據,和從數據庫中給刪除任意員工信息。該應用程序還使用了ASP.NET的Membership Provider來創建新用戶和認證已有用戶,客戶端驗證通過JavaScript實現。

創建MVC項目

圖1

創建MVC項目、數據庫和數據模型

在此前的ASP.NET MVC 2.0文章中,我討論過如何使用Visual Studio 2008編輯器來創建一個MVC Web應用程序。在本篇文章中我使用VS2008(.NET框架3.5)創建的項目名稱為“MyMvcSample”。創建了MVC 2.0網站后,接下來將是創建數據庫和數據模型。

創建數據庫和數據模型

圖2

右鍵點擊項目的“App_Data”文件夾,并向你的解決方案增加一個“SQL Server Database”對象。如果你的開發環境中沒有安裝“SQL Express”,你不會在“Template”窗口中看到這個選項。將SQL Express數據庫的名稱指定為MySampleDatabase.mdf,點擊“Add”按鈕后,一個新數據庫將被添加到App_Data文件夾中。現在從“View”菜單中打開“Server Explorer”;你將看到MySampleDatabase.mdf數據庫已經存在。右鍵點擊該數據庫下的“Tables”對象,增加一個名為“tblEmployee”的新表。在該表中添加以下列。

  1. EmployeeName nvarchar(100)   
  2. EmployeeSalary numeric(18, 2)   
  3. EmployeeId int (Primary Key)   
  4. Department nvarchar(100)   
  5. Age int  
  6. Skillset nvarchar(1000)   
  7. Role nvarchar(50) 

對于主鍵列,你需要修改兩個屬性:將“Identity Specification”的值從“No”改為“Yes”,將“Identity Increment”從0改為1。表創建完后,增加一些示例數據以供測試用。

增加一些示例數據以供測試用

圖3

接下來你需要創建一個數據模型,右鍵點擊“Model”文件夾,并增加一個新條目。從模板列表中選擇“ADO.NET Entity Data Model”。在本示例中我的模型名稱為“DataModel.edmx”。點擊增加按鈕向你的解決方案添加該模型。接下來你將看到一個向導界面,它將指導你為剛才創建的模型增加數據源。選擇“Generate from Database”并點擊下一步。

接下來你需要選擇合適的數據源,從列表中選擇此前創建的“MySampleDatabase.mdf”,并為該數據源指定一個名稱。在解決方案web.config文件下的“ConnectionStrings”標簽下,你將看到一個自動生成的包含數據源名稱和連接字符串的條目。在本例中我的連接名稱是“MySampleDatabaseEntities”。接下來,檢查tblEmployee,并向你的模型提供一個命名空間名稱。

提供一個命名空間名稱

圖4

在模型創建后,在模型查看器中打開DataModel.edmx。該查看器將幫助你查看模型數據源,以及模型和數據庫之間的字段映射。使用模型查看器你還可以更改模型屬性、字段名和數據類型。這個“Employee”模型將被在Controller類中使用,來增加、編輯和刪除數據庫中的員工詳細信息。DataModel.edmx是一個ADO.NET Entity Framework對象,可以在進行插入、更新或刪除數據時減少代碼編寫工作量。ADO.NET Entity Framework還支持LINQ,因此你可以在業務對象上編寫查詢類的SQL,而無需編寫存儲過程來抓取數據。

編寫查詢類的SQL

圖5

#p#

創建控制器

控制器將會用到 Microsoft.Web.Mvc.Build.dll和Microsoft.Web.Mvc.dll中的類。因此在編譯應用程序之前,應檢查上述兩個動態庫已經在你的bin文件夾下。

對于增加、編輯、刪除和查看員工職責詳細信息等操作,我已經在我的HomeController中增加了“Get”和“Post”函數。控制器中的每一個函數都被關聯到一個視圖(.ASPX頁面),例如為了查看員工列表,我編寫了“Index”函數來返回員工列表信息,該信息將被顯示在名為“Index.aspx”的視圖中。要想顯示某個特定員工的數據,則會調用Details函數。

 

  1. Function Details(ByVal id As Integer) As ActionResult  
  2. Dim objEditEmployee = (From c In objDatabaseEntities.EmployeeSet 
  3. Where c.EmployeeId = id Select c).FirstOrDefault()  
  4.             Return View(objEditEmployee)  
  5. End Function 

LINQ被用來查詢業務對象和從Employee List模型中查找某個特定員工。通過使用“Return View”,這個員工對象將被發回到相應的視圖。至于創建一個新員工,我也為“Create”方法創建了“Get”和“Post”兩個版本。該方法的Get版將重定向到一個空白Employee頁面/視圖,由用戶來輸入員工詳細信息,而Post版的“Create”函數將使用我們之前創建的Employee Model對象保存數據庫中的員工詳細信息。51C TO-.NET頻道向您推薦《LINQ教程-LINQ to SQL技術精解》專題。

框架應用

圖6

我對Create.aspx頁面中的所有輸入字段都添加了合適的客戶端驗證代碼。如果新輸入的員工姓名已經存在,則數據不會被插入到數據庫中。

 

  1. Function Create(ByVal objEmployee As Employee) As ActionResult  
  2.             Try  
  3. Dim objExtEmployee = (From c In objDatabaseEntities.EmployeeSet Where   
  4. c.EmployeeName = objEmployee.EmployeeName Select c).FirstOrDefault()  
  5.          If objExtEmployee Is Nothing Then  
  6.               objDatabaseEntities.AddToEmployeeSet(objEmployee)  
  7.               objDatabaseEntities.SaveChanges()  
  8.               Return RedirectToAction("Index")  
  9.                 End If  
  10.             Catch  
  11.                 Return View()  
  12.             End Try  
  13.             Return RedirectToAction("Index")  
  14. End Function 

對于編輯員工詳細信息,我也創建“Get”和“Post”版的Edit函數,不過我在HomeController本身中增加了驗證機制。如果驗證失敗的話,我會使用Modelstate.Addmodelerror()函數來向相應視圖拋出一個錯誤信息。

  1. Protected Sub ValidateContact(ByVal EmployeeToValidate As Employee)  
  2.      If EmployeeToValidate.EmployeeName.Trim().Length = 0 Then  
  3.          ModelState.AddModelError("Employee Name", "Employee name is required   
  4.          field.")  
  5.      End If  
  6.      If EmployeeToValidate.EmployeeId.ToString().Trim().Length = 0 Then  
  7.      ModelState.AddModelError("Employee Id", "Employee Id is required field.")  
  8.      End If  
  9.      If (EmployeeToValidate.Department.Length = 0) Then  
  10.      ModelState.AddModelError("Employee Department", "Employee Department is   
  11.       required field.")  
  12.      End If  
  13.      If (EmployeeToValidate.EmployeeSalary.ToString().Length = 0) Then  
  14.      ModelState.AddModelError("Employee Salary", "Employee Salary is required   
  15.          field.")  
  16.      End If  
  17.      If (EmployeeToValidate.Age.ToString().Length = 0) Then  
  18.  ModelState.AddModelError("Employee Age", "Employee Age is required field.")  
  19.      End If  
  20.      If (EmployeeToValidate.Skillset.ToString().Length = 0) Then  
  21. ModelState.AddModelError("Employee Skillset", "Employee Skillset is required   
  22.          field.")  
  23.      End If  
  24.      If (EmployeeToValidate.Skillset.ToString().Length = 0) Then  
  25.          ModelState.AddModelError("Employee Role", "Employee Role is required   
  26.          field.")  
  27.      End If  
  28.  End Sub 

在刪除員工列表方面,我只增加了一個Get版,并在視圖中增加了必要的JavaScript驗證代碼(確認信息)。

創建視圖

在一個ASP.NET MVC應用中,所有入站的瀏覽器請求都被映射到控制器行為上。控制器行為可能會返回一個視圖。與ASP.NET頁面不一樣,MVC視圖后端沒有任何代碼。你可以通過右鍵點擊控制器post函數并選擇“view”選項來創建視圖。向項目增加視圖的第二種方法是,右鍵點擊你的視圖文件夾,并增加一個新視圖。默認情況下,沒有后端代碼的.ASPX就是這些視圖。你可以在項目中增加一個.ASCX文件和HTML文件作為視圖。

結果

圖7

本例中,我創建了4個不同的視圖來實現增加、編輯、列舉和顯示員工詳細信息,它們都是強類型視圖。我使用了HTML幫助類,在視圖中創建HTML對象和驗證信息來驗證客戶端數據項。以下代碼顯示了如何使用HTML幫助類創建一個HTML輸入控制和添加驗證。

  1. <div class="editor-field"> 
  2. <%= Html.TextBoxFor(Function(model) model.EmployeeName) %> 
  3. <%= Html.ValidationMessageFor(Function(model) model.EmployeeName) %> 
  4. </div> 

我試用HTML輔助方法ActionLink來實現視圖導航,使用Html.Encode()來將“<”和“>”等特殊字符編碼成可以在網頁上正常顯示的字符。微軟推薦使用HTML.Encode()方法來防止JavaScript注入攻擊。以下是向數據庫增加一名新員工的代碼。

  1. <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
  2.     <h2>Create Employee</h2> 
  3.     <%=""%> 
  4.     <% Using Html.BeginForm()%> 
  5.  
  6.         <fieldset> 
  7.             <legend>Details to Enter</legend>            
  8.             <div class="editor-label"> 
  9.                 <%=Html.LabelFor(Function(model) model.EmployeeName)%> 
  10.             </div> 
  11.             <div class="editor-field"> 
  12.              <%= Html.TextBoxFor(Function(model) model.EmployeeName) %> 
  13.      <%= Html.ValidationMessageFor(Function(model) model.EmployeeName) %> 
  14.             </div>            
  15.             <div class="editor-label"> 
  16.                 <%= Html.LabelFor(Function(model) model.EmployeeSalary) %> 
  17.             </div> 
  18.             <div class="editor-field"> 
  19.                 <%= Html.TextBoxFor(Function(model) model.EmployeeSalary) %> 
  20.     <%= Html.ValidationMessageFor(Function(model) model.EmployeeSalary) %> 
  21.             </div>            
  22.             <div class="editor-label"> 
  23.                 <%= Html.LabelFor(Function(model) model.EmployeeId) %> 
  24.             </div> 
  25.             <div class="editor-field"> 
  26.         <%= Html.TextBoxFor(Function(model) model.EmployeeId) %> 
  27.          <%= Html.ValidationMessageFor(Function(model) model.EmployeeId) %> 
  28.             </div>            
  29.             <div class="editor-label"> 
  30.                 <%= Html.LabelFor(Function(model) model.Department) %> 
  31.             </div> 
  32.             <div class="editor-field"> 
  33.                 <%= Html.TextBoxFor(Function(model) model.Department) %> 
  34.        <%= Html.ValidationMessageFor(Function(model) model.Department) %> 
  35.             </div>            
  36.             <div class="editor-label"> 
  37.                 <%= Html.LabelFor(Function(model) model.Age) %> 
  38.             </div> 
  39.             <div class="editor-field"> 
  40.                 <%= Html.TextBoxFor(Function(model) model.Age) %> 
  41.         <%= Html.ValidationMessageFor(Function(model) model.Age) %> 
  42.             </div> 
  43.               
  44.             <div class="editor-label"> 
  45.                 <%= Html.LabelFor(Function(model) model.Skillset) %> 
  46.             </div> 
  47.             <div class="editor-field"> 
  48.                 <%= Html.TextBoxFor(Function(model) model.Skillset) %> 
  49.          <%= Html.ValidationMessageFor(Function(model) model.Skillset) %> 
  50.             </div>            
  51.             <div class="editor-label"> 
  52.                 <%= Html.LabelFor(Function(model) model.Role) %> 
  53.             </div> 
  54.             <div class="editor-field"> 
  55.                 <%= Html.TextBoxFor(Function(model) model.Role) %> 
  56.          <%= Html.ValidationMessageFor(Function(model) model.Role) %> 
  57.             </div> 
  58.               
  59.             <p> 
  60.                 <input type="submit" value="Create" /> 
  61.             </p> 
  62.         </fieldset> 
  63.     <% End Using %> 
  64.     <div> 
  65.         <%=Html.ActionLink("Back to Employee List", "Index")%> 
  66.     </div> 
  67. </asp:Content> 

結束語

對于那些剛接觸ASP.NET Web編程的開發者來說,學習MVC框架并不是一件難事。MVC框架應用程序的代碼也非常容易維護。另外,開發者還可以在該框架中使用測試驅動開發方法。

原文題目:Create a Web App Using ASP.NET MVC 2.0 Framework

【編輯推薦】

  1. 添加設置ASP.NET Web時出現問題
  2. 詳細說明ASP.NET 2.0功能支持
  3. 強化部署ASP.Net 2.0配置應用程序
  4. 微軟PDC2009直擊:改進ASP.NET 4運行時
  5. 詳解ASP.NET MVC 2自定義驗證
責任編輯:彭凡 來源: 51CTO
相關推薦

2010-06-23 15:44:03

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2010-01-07 10:05:51

IT顧問特質

2010-06-25 08:51:46

ASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2011-05-03 13:13:52

編程PHPJava

2014-04-22 16:38:12

GitHubGitHub 使用技巧

2009-06-01 10:23:31

asp.net mvcasp.net mvc.net mvc框架

2009-03-13 10:58:48

ASP.NetMVC框架編程

2014-06-30 09:22:38

ASP.NETBootstrap

2009-07-22 17:23:03

XmlDataSourASP.NET 2.0

2010-06-23 08:56:58

ASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2009-09-14 09:45:20

Chrome谷歌操作系統

2023-04-23 15:11:26

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99自拍视频 | 欧美1区2区 | 天天天操天天天干 | 成人h动漫精品一区二区器材 | 中文字幕精品视频 | a国产一区二区免费入口 | 成人三级视频 | 国产伦精品 | 韩日中文字幕 | 久久er99热精品一区二区 | 欧美激情综合 | 国产精品区一区二区三 | 91xxx在线观看 | 欧美精品一区二区三区在线 | 青草久久免费视频 | 性色av一区二区三区 | 毛片区 | 91欧美激情一区二区三区成人 | 中文字幕亚洲一区二区三区 | 日韩乱码av| 狠狠涩 | 精品成人免费一区二区在线播放 | 一区二区三区欧美在线 | 国产午夜精品久久久 | 91中文字幕在线观看 | 欧美日韩亚洲视频 | 久久av在线播放 | 91不卡 | 日韩欧美一区在线 | 九九久久国产 | 亚洲精品在线免费看 | h视频在线播放 | 欧美日韩亚洲二区 | 国产农村妇女精品一二区 | 99视频免费播放 | 日本特黄a级高清免费大片 特黄色一级毛片 | 四虎永久免费在线 | 毛片网站在线观看 | 日韩精品一区二区三区中文在线 | 欧美天堂在线 | 国产中文原创 |