文章目錄
Asp.net dynamic Data web Site 之二建立第一個Web Site
本專題介紹一個ASP.NET動態資料的網站的布局,其中包括這些檔案預設情況下建立相關檔案夾和檔案。
建立一個動態資料網站(Dynamic Data Web Site) 環境
vs.net 2008 + sp1
Dynamic Data Wizard 080608(http://www.codeplex.com/aspnet)
提供一個嚮導方式建立一個Dynamic Data Web Site
知識點:
LINQ-TO-SQL,Ado.net framework entity
System.Web.Routing
- 通過動態資料網站模板建立一個項目Dynamic Data Entities Web Site(資料來源是ado.net entity framework 提供) ,Dynamic Data Web Site(資料來源是LINQ-To-SQL提供)
圖表 1
- 利用動態資料建立的網站布局,就是這些模板產生使用者控制項包括網頁模板,欄位模板,內容(css,圖片,js等)。
圖表 2
圖表 3
檔案夾和檔案
下表介紹了在ASP.NET動態資料網站在根目錄級建立的檔案和檔案夾。
檔案和檔案夾 |
描述 |
DynamicData |
包含顯示和操作資料的頁面和自訂控制項,頁面,和子控制項如欄位控制項 |
Default.aspx |
一個預設首頁面顯示所有註冊的資料模型及表名。通過一個超連結,顯示選擇表的內容。 |
Global.asax |
包含一個 註冊資料庫執行個體元模型的方法,並新增一個RouteCollection對象 |
Site.css |
網站和控制項的顯示風格 |
Site.master |
網站模板 |
web.config |
設定檔,載入必要的類庫 |
Web.Config
圖表 4
- 添加一個中繼資料庫執行個體模型(LINQ-TO-SQL)
圖表 5
- 註冊這個中繼資料模型,開啟Global.asax
public static void RegisterRoutes(RouteCollection routes) {
MetaModel model = new MetaModel();
//model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = model
});
//routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
// Action = PageAction.List,
// ViewName = "ListDetails",
// Model = model
//});
//routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
// Action = PageAction.Details,
// ViewName = "ListDetails",
// Model = model
//});
}
將建立的LINQ-TO-SQL註冊到MetaModel中
model.RegisterContext(typeof(NorhwindDbDataContext), new ContextConfiguration() { ScaffoldAllTables = true });
- 測試一下,編譯後F5,一個網站建立完畢
圖表 6
首頁的代碼片斷,顯示所有註冊的表
protected void Page_Load(object sender, EventArgs e)
{
System.Collections.IList visibleTables = MetaModel.Default.VisibleTables;
if (visibleTables.Count == 0)
{
throw new InvalidOperationException("There are no accessible tables. Make sure that at least one data model is registered in Global.asax and scaffolding is enabled or implement custom pages.");
}
Menu1.DataSource = visibleTables;
Menu1.DataBind();
}
圖表 7
各個頁面中的超連結通過RouteCollection(System.Web.Routing)的路由規則進行頁面間的跳轉和對資料新增/修改/刪除操作;關於System.Web.Routing在asp.net mvc中有比較詳細的介紹
routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = model
});
下期講如何通過Routing的規則控製表的修改,新增操作頁面;