DataTypeAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定要與資料欄位產生關聯的其他類型名稱。
public ref class DataTypeAttribute : System::ComponentModel::DataAnnotations::ValidationAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)]
public class DataTypeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false)]
public class DataTypeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)>]
type DataTypeAttribute = class
inherit ValidationAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false)>]
type DataTypeAttribute = class
inherit ValidationAttribute
Public Class DataTypeAttribute
Inherits ValidationAttribute
- 繼承
- 衍生
- 屬性
範例
下列範例會 DataTypeAttribute 使用 屬性來自定義 EmailAddress 數據欄位的顯示。 電子郵件地址會顯示為超連結,而不是簡單的文字,也就是動態數據從內部數據類型推斷的內容。 範例程式代碼有三個部分,它會執行下列步驟:
它會實作元數據部分類別和相關聯的元數據類別。
在相關聯的元數據類別中,它會藉由指定EmailAddress列舉值,將 DataTypeAttribute 屬性套用至 EmailAddress 數據欄位。 這表示 Text.ascx 字段範本應該自訂電子郵件地址的顯示。
它會修改 Text.ascx 欄位範本,以自定義 EmailAddress 數據欄位的顯示。
using System;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}
public class CustomerMetaData
{
// Add type information.
[DataType(DataType.EmailAddress)]
public object EmailAddress;
}
Imports System.Web.DynamicData
Imports System.ComponentModel.DataAnnotations
<MetadataType(GetType(CustomerMetadata))> _
Partial Public Class Customer
End Class
Public Class CustomerMetadata
' Add type information.
<DataType(DataType.EmailAddress)> _
Public EmailAddress As Object
End Class
<%@ Control Language="C#"
CodeFile="Text.ascx.cs" Inherits="TextField" %>
<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> -->
<%@ Control Language="VB"
CodeFile="Text.ascx.vb" Inherits="TextField" %>
<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> -->
using System;
using System.Linq;
using System.Web.UI.WebControls;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
public partial class TextField :
System.Web.DynamicData.FieldTemplateUserControl {
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
bool processed = false;
var metadata = MetadataAttributes.OfType
<DataTypeAttribute>().FirstOrDefault();
if (metadata != null)
{
if (metadata.DataType == DataType.EmailAddress)
{
if (!string.IsNullOrEmpty(FieldValueString))
{
processed = true;
HyperLink hyperlink = new HyperLink();
hyperlink.Text = FieldValueString;
hyperlink.NavigateUrl = "mailto:" + FieldValueString;
Controls.Add(hyperlink);
}
}
}
if (!processed)
{
Literal literal = new Literal();
literal.Text = FieldValueString;
Controls.Add(literal);
}
}
}
Imports System.Linq
Imports System.Web.UI.WebControls
Imports System.Web.DynamicData
Imports System.ComponentModel.DataAnnotations
Partial Public Class TextField
Inherits System.Web.DynamicData.FieldTemplateUserControl
Protected Overloads Overrides Sub OnDataBinding(ByVal e As EventArgs)
MyBase.OnDataBinding(e)
Dim processed As Boolean = False
Dim metadata As DataTypeAttribute = _
MetadataAttributes.OfType(Of DataTypeAttribute)().FirstOrDefault()
If metadata IsNot Nothing Then
If metadata.DataType = DataType.EmailAddress Then
If Not String.IsNullOrEmpty(FieldValueString) Then
processed = True
Dim hyperlink As New HyperLink()
hyperlink.Text = FieldValueString
hyperlink.NavigateUrl = "mailto:" + FieldValueString
Controls.Add(hyperlink)
End If
End If
End If
If Not processed Then
Dim literal As New Literal()
literal.Text = FieldValueString
Controls.Add(literal)
End If
End Sub
End Class
若要編譯和執行範例程式代碼,您需要下列專案:
任何版本的Visual Studio 2010或更新版本。
AdventureWorksLT 範例資料庫。 如需如何下載及安裝 SQL Server 範例資料庫的詳細資訊,請參閱 Microsoft SQL Server 產品範例:GitHub 上的資料庫。 請確定您為所執行之 SQL Server 版本安裝正確的範例資料庫版本。
數據驅動網站。 這可讓您建立資料庫的數據內容,並建立包含要自定義之數據欄位的類別。 如需詳細資訊,請參閱
Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding
。
備註
屬性 DataTypeAttribute 可讓您使用比資料庫內建類型更明確的類型來標記欄位。 從列舉型別選取 DataType 類型名稱。 例如,可以指定包含電子郵件位址的字串數據欄位作為 EmailAddress 類型。 然後,欄位範本會存取這項資訊,以修改數據欄位的處理方式。
基於下列原因, DataTypeAttribute 您可以使用 屬性:
提供數據欄位的其他類型資訊。 您可以藉由將 DataTypeAttribute 屬性套用至數據模型中的數據欄位,以及從列舉指定其他型別名稱來執行 DataType 此動作。 處理數據欄位的欄位範本可以存取這個額外的元數據類型資訊,以判斷如何處理欄位。 例如,文字欄位範本可以針對內建類型為
String
的電子郵件地址產生超連結。建立自定義欄位範本與數據欄位的關聯。 接著會使用指定的自定義欄位範本來處理數據欄位。 這是使用 屬性的 UIHintAttribute 替代方法。
當您將 DataTypeAttribute 屬性套用至資料欄位時,必須執行下列動作:
遵循屬性使用規則。
實作元數據類別,其中包含您要套用屬性的數據欄位。
適當地發出驗證錯誤。
如需詳細資訊,請參閱 ASP.NET 動態數據指導方針。
建構函式
DataTypeAttribute(DataType) |
使用指定的型別名稱來初始化 DataTypeAttribute 類別的新執行個體。 |
DataTypeAttribute(String) |
使用指定的欄位範本名稱,來初始化 DataTypeAttribute 類別的新執行個體。 |
屬性
CustomDataType |
取得與資料欄位相關聯的自訂欄位範本名稱。 |
DataType |
取得與資料欄位相關聯的型別。 |
DisplayFormat |
取得資料欄位的顯示格式。 |
ErrorMessage |
取得或設定錯誤訊息,此錯誤訊息會在驗證失敗時與驗證控制項產生關聯。 (繼承來源 ValidationAttribute) |
ErrorMessageResourceName |
取得或設定要在驗證失敗時用來查閱 ErrorMessageResourceType 屬性值的錯誤訊息資源名稱。 (繼承來源 ValidationAttribute) |
ErrorMessageResourceType |
取得或設定資源類型,此類型可在驗證失敗時用於查閱錯誤訊息。 (繼承來源 ValidationAttribute) |
ErrorMessageString |
取得當地語系化的驗證錯誤訊息。 (繼承來源 ValidationAttribute) |
RequiresValidationContext |
取得值,這個值表示屬性是否需要驗證內容。 (繼承來源 ValidationAttribute) |
TypeId |
在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。 (繼承來源 Attribute) |
方法
Equals(Object) |
傳回值,這個值指出此執行個體是否與指定的物件相等。 (繼承來源 Attribute) |
FormatErrorMessage(String) |
根據發生錯誤所在的資料欄位,將格式套用至錯誤訊息。 (繼承來源 ValidationAttribute) |
GetDataTypeName() |
傳回與資料欄位相關聯的型別名稱。 |
GetHashCode() |
傳回這個執行個體的雜湊碼。 (繼承來源 Attribute) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
GetValidationResult(Object, ValidationContext) |
檢查指定的值在目前的驗證屬性方面是否有效。 (繼承來源 ValidationAttribute) |
IsDefaultAttribute() |
在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。 (繼承來源 Attribute) |
IsValid(Object) |
檢查資料欄位的值是否有效。 |
IsValid(Object, ValidationContext) |
根據目前的驗證屬性,驗證指定的值。 (繼承來源 ValidationAttribute) |
Match(Object) |
在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承來源 Attribute) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |
Validate(Object, String) |
驗證指定的物件。 (繼承來源 ValidationAttribute) |
Validate(Object, ValidationContext) |
驗證指定的物件。 (繼承來源 ValidationAttribute) |
明確介面實作
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承來源 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
擷取物件的類型資訊,可以用來取得介面的類型資訊。 (繼承來源 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
擷取物件提供的類型資訊介面數目 (0 或 1)。 (繼承來源 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供物件所公開的屬性和方法的存取權。 (繼承來源 Attribute) |