概述
在ASP.NET 3.5 Extensions新特性:ASP.NET Dynamic Data 體驗(上)一文中簡單的展示了一下ASP.NET Dynamic Data產生的資料檢視網頁效果,在這一篇中,看一下如何更進一步定製我們的網站。
定製網站外觀
首先從最簡單的開始定製,在網站下有一個MasterPage.master三個CSS樣式檔案,可以先從這裡下手,修改網站的整體外觀。如簡單修改一下MasterPage,使其看起來如下所示:
自訂動態資料視圖
自訂動態資料視圖,可以修改App_Shared/DynamicDataPages下的頁面來實現,如可以修改一下ListDetailsTemplate.aspx,為頁面中的每部分加上一個標題:
除此之外,我們可以針對特定的表進行資料檢視的定製,在網站下添加一個Products檔案夾(注意與表名必須相同),並添加一個ListDetail.aspx頁面,在頁面不顯示Detail資訊,這時候再開啟Products時,顯示的頁面中沒有了Detail資訊:
URL的訪問方式是~/{table}/{viewName}.aspx,在Web.config中指定:
<dynamicData dataContextType="" enableTemplates="true"> <mappings queryStringKeyPrefix="" pattern="~/{table}/{viewName}.aspx"> <add actions="list,details" viewName="ListDetails" templateFile="ListDetailsTemplate.aspx" /> <!-- <add actions="list" viewName="List" templateFile="ListTemplate.aspx" /> <add actions="details" viewName="Details" templateFile="DetailsTemplate.aspx" /> --> <!-- Special overriding cases <add actions="list,details" tables="Products,Categories" viewName="SpecialName" templateFile="ListTemplate.aspx"/> <add actions="list" tables="Products" templateFile="DetailsTemplate.aspx" path="~/customPath.aspx"/> <add actions="list" tables="Orders" viewName="MyListViewName"/> --> </mappings></dynamicData></system.web.extensions>
自訂動態資料欄位
自訂動態資料欄位,可以通過修改App_Shared/DynamicDataFields下的使用者控制項來實現,如開啟Text_Edit.ascx,為其中的TextBox添加一個背景色:
<asp:TextBox ID="TextBox1" runat="server" Text='<%# DataValue %>' BackColor="#FDDCBF"></asp:TextBox>
再運行網站,進行資料編輯時可以看到:
自己建立動態資料欄位
除了使用上面的方法自訂動態資料欄位之外,還可以自己建立動態資料欄位,在App_Shared/DynamicDataFields下添加一個Dynamic Data Field:
可以看到控制項繼承於FieldTemplateUserControlBase類,在其中添加一個Label控制項,並設定它的前景色彩為紅色:
<%@ Control Language="C#" Inherits="System.Web.DynamicData.FieldTemplateUserControlBase" %><asp:Label id="CurrentValueID" runat="server" Text='<%# DataValueString %>' ForeColor="#FF0000"> </asp:Label>
關聯資料表中的欄位和控制項,需要添加一個pratial類,使用RenderHint特性來指定,第一個參數是欄位,第二個參數是與其相關聯的控制項:
[RenderHint("Status", "StatusControl")]public partial class Item{}
然後再運行網站,進入Item資料檢視,可以看到Status的前景色彩都變成了紅色:
自訂資料驗證
在ASP.NET Dynamic Data中內建支援資料驗證,我們也可以進行自訂的資料驗證。同樣是添加一個pratial類,內建的驗證特性有Range、Regex、Require三個,如下代碼所示:
using System;using System.Web.DynamicData;[Range("Qty", 100, 1000, ErrorMessage = "Qty必須在{1}和{2}之間")]public partial class Inventory{}
在運行時如果輸入小於100或者大於1000將會給出提示資訊: 如果使用使用上面的幾個特性還不夠的話,你也可以使用LINQ to SQL中的局部方法OnPropertyChanging來進行驗證,如下代碼所示
public partial class Product { partial void OnProductNameChanging(string value) { if (!Char.IsUpper(value[0])) { throw new Exception("Product name must start with an uppercase letter.");} }}
結束語
關於ASP.NET 3.5 Extensions中的新特性動態資料支援就用兩篇文章介紹到這裡,後續文章再介紹其他的特性。
ASP.NET 3.5 Extensions新特性:ASP.NET Dynamic Data 體驗(上)