[譯]MVC網站教程(一):多語言網站框架
本文簡介
本博文介紹了 Visual Studio 工具生成的 ASP.NET MVC3 站點的基本框架;怎樣實現網站的語言的國際化與本地化功能,從零開始實現使用者身份認證機制,從零開始實現使用者註冊機制,實現自定義的MVC驗證特性……
本系列包含四篇,在codeproject中都評級為4+顆星。我會全部翻譯出來,感興趣的園友可以關注我的部落格。
1)MVC網站教程(一):多語言網站框架
在執行示例程式碼之前
在執行示例程式碼之前,你應該做下面事情:
1.在你的SQL Server伺服器中建立一個名為MvcBasicSite的資料庫,然後用我提供的MvcBasicSiteDatabase.bak
2.修改MVC示例應用程式中Web.config檔案中的連結字串。
本博文示例下載:
介紹
“MVC網站教程”系列的目的是教你如何使用 ASP.NET MVC 建立一個基本的、可擴充套件的網站。
ASP.NET MVC 是微軟提供的一個web開發框架,它整合MVC(Model View Controller)架構模式的高效與簡潔,並從敏捷開發中吸取了最新的概念和技術……融入ASP.NET平臺。
MVC應用程式包含下面幾個元件:
1)Models:模型物件,做為應用程式的資料域,通常,模型物件在資料庫中檢索和儲存它們的狀態。
2)
3)Controllers:控制器,處理使用者互動資訊,與model協同工作,最後選擇一個view顯示處理結果頁。
本文是“MVC網站教程”系列的首篇,主要講解如何去建立一個多語言MVC網站,同時也講解了使用者認證和註冊機制的實現。使用了微軟的Entity Framework框架和LINQ查詢技術。
從使用者介面的角度來看,本文提供的MVC網站框架包括:主頁面(主要佈局項:選單,頁首,頁尾),“Home”和“About”導航索引,實現“LogOn(登陸)”和“Register(註冊)”功能頁,還提供通用的使用者資訊和地址資訊編輯的部分功能頁(_UserAndAddress.cshtml)
整個使用者介面語言完全實現國際化與本地化功能,提供三種語言支援:English、Romanian (Română) 和 German (Deutch)。並且支援擴充套件其他語言。
當用戶通過上圖右上角的下拉列表改變使用者語言時,使用者介面的文字、數字、驗證資訊和錯誤提示訊息都將從這一刻更改為特定的語言。
軟體環境
1..NET 4.0 Framework
2.Visual Studio 2010 (or Express edition)
3.ASP.NET MVC 3.0
4.SQL Server 2008 R2 (or Express Edition version 10.50.2500.0, or higher version)
網站框架
本文示例的解決方案包含兩個專案:
1.MvcBasicSite:是ASP.NET MVC 3站點專案。包含部分Models、所有Views和所有Controllers,還包含其他使用者資原始檔和相關程式碼。下面會進行詳細介紹。
2.MvcBasic.Logic:是一個類庫專案。包含Entity Framework的實體對映圖(.edmx),以及自動生成的相關實體部分類,和手動建立的邏輯實體部分類。這個專案將在“MVC網站教程”系列的第二篇中詳細介紹。
上圖,是ASP.NET MVC3 專案自動生成的檔案架構:
1.:可選特殊資料夾,包含應用程式級別程式碼。如在本示例中,該資料夾包含一個Content.cshtml檔案,它定義了一個Razor語法的 幫助器方法,編譯器會將其編譯為“Content”(和檔名一樣)的類,你可以在應用程式的任何檢視模版中使用該幫助器方法。(該資料夾下的檔案在應用程式執行時動態編譯為程式集並且自動連結到應用程式,而不需要手動新增程式集引用。但是,需要注意的是該資料夾的更改會導致整個應用程式重新編譯。對於大型專案,因為很耗時,這可能不受歡迎。為此,鼓勵大家將程式碼進行模組化處理到不同的類庫中)
2.App_Data:可選特殊資料夾,包含資料的物理儲存檔案。本示例中為空資料夾。
3.App_GlobalResources:可選特殊資料夾,包含用於實現應用程式多語言特性的資原始檔。注意,檔案的命名非常重要,並且每一個資原始檔包含站點中每個要顯示文字的特定語言版本。在本示例中包含3個特定語言的資原始檔:
1)Resource.resx:是預設資原始檔,關聯 English 語言。
2)Resource.de.resx:是關聯 German 語言的資原始檔。(語言程式碼:de-DE)
3)Resource.ro.resx:是關聯 Romanian 語言的資原始檔。(語言程式碼:ro-RO)
4.Content:是靜態檔案推薦存放的資料夾,比如CSS,圖片,主題等等。在本示例中,該資料夾存放有:
1)Images:子資料夾,包含圖片檔案(gif、png…)。
2)Theme:子資料夾,包含基本的jQueryUI主題的css檔案。
3)dd.css:改變語言的下拉列表控制元件的樣式檔案。
4)site.css:站點主要的css檔案。
5.Controllers:這是控制器Controller推薦存放的資料夾,在MVC架構中控制器需要以”Controller”的檔名結尾。在本示例中該資料夾包含三個控制器:
1)BaseController:基本控制器,是本示例中其他Controller的基類,提供公共資料和公共函式。
2)AccountController:管理使用者註冊,登陸和退出。
3)HomeController:管理導航頁“Home”和“About”的操作。
6.Model:MVC網站應用程式的資料模型集合。在本示例中真實的模型物件被放在MvcBasic.Logic類庫專案中(即與資料庫表對應的模型物件Domain Model)。在Model資料夾下只包含2個類檔案。
1)LogOnModel:此模型用於LogOn頁面的使用者身份認證功能。
2)SiteSession:此模型用於儲存站點的特定使用者會話資訊,eg:UserId,Username,UserRole和CurentUICulture。
7.Scripts:這是應用程式指令碼檔案推薦存放的資料夾。建立MVC專案預設會包含ASP.NET AJAX指令碼庫和jQuery指令碼庫。
8.Views:這是應用程式檢視推薦存放的資料夾。該資料夾針對每個控制器都對應一個子資料夾,子資料夾命名為對應控制器的字首。預設情況下,還有個命名為Shared的子資料夾,它不對應任何控制器,但包含被多個控制器共享的檢視。在本示例中該資料夾包含以下子資料夾:
1)Account:控制器AccountController對應的檢視。
a)Logon.cshtml:用於使用者的身份認證。
b)Register.cshtml:用於使用者的註冊。
c)