DataTypeAttribute Kelas

Definisi

Menentukan nama tipe tambahan untuk dikaitkan dengan bidang data.

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
Warisan
Turunan
Atribut

Contoh

Contoh berikut menggunakan atribut untuk mengkustomisasi DataTypeAttribute tampilan bidang data EmailAddress. Alamat email ditampilkan sebagai hyperlink alih-alih sebagai teks sederhana, yang merupakan apa yang akan disimpulkan Data Dinamis dari jenis data intrinsik. Contoh kode berada dalam tiga bagian, dan melakukan langkah-langkah berikut:

  • Ini mengimplementasikan kelas parsial metadata dan kelas metadata terkait.

  • Di kelas metadata terkait, ini menerapkan DataTypeAttribute atribut ke bidang data EmailAddress dengan menentukan EmailAddress nilai enumerasi. Ini menunjukkan templat bidang Text.ascx bahwa templat bidang tersebut harus menyesuaikan tampilan alamat email.

  • Ini memodifikasi templat bidang Text.ascx untuk mengkustomisasi tampilan bidang data 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

Untuk mengkompilasi dan menjalankan kode contoh, Anda memerlukan hal berikut:

  • Setiap edisi Visual Studio 2010 atau yang lebih baru.

  • Database sampel AdventureWorksLT. Untuk informasi tentang cara mengunduh dan menginstal database sampel SQL Server, lihat Microsoft SQL Server Sampel Produk: Database di GitHub. Pastikan Anda menginstal versi database sampel yang benar untuk versi SQL Server yang Anda jalankan.

  • Situs Web berbasis data. Ini memungkinkan Anda membuat konteks data untuk database dan membuat kelas yang berisi bidang data yang akan disesuaikan. Untuk informasi selengkapnya, lihat Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding .

Keterangan

Atribut memungkinkan DataTypeAttribute Anda menandai bidang dengan menggunakan jenis yang lebih spesifik daripada jenis intrinsik database. Nama jenis dipilih dari DataType jenis enumerasi. Misalnya, bidang data string yang berisi alamat email dapat ditentukan sebagai jenisnya EmailAddress . Informasi ini kemudian diakses oleh templat bidang untuk memodifikasi bagaimana bidang data diproses.

Anda menggunakan atribut karena DataTypeAttribute alasan berikut:

  • Untuk memberikan informasi jenis tambahan untuk bidang data. Anda melakukan ini dengan menerapkan DataTypeAttribute atribut ke bidang data dalam model data dan dengan menentukan nama jenis tambahan dari DataType enumerasi. Templat bidang yang memproses bidang data dapat mengakses informasi jenis metadata tambahan ini untuk menentukan cara memproses bidang. Misalnya, templat bidang teks dapat menghasilkan hyperlink untuk alamat email yang jenis intrinsiknya adalah String.

  • Untuk mengaitkan templat bidang kustom dengan bidang data. Templat bidang kustom yang ditentukan kemudian akan digunakan untuk memproses bidang data. Ini adalah alternatif untuk menggunakan UIHintAttribute atribut .

Saat menerapkan atribut ke DataTypeAttribute bidang data, Anda harus melakukan hal berikut:

  • Ikuti aturan penggunaan atribut.

  • Terapkan kelas metadata yang berisi bidang data yang ingin Anda terapkan atributnya.

  • Mengeluarkan kesalahan validasi yang sesuai.

Konstruktor

Nama Deskripsi
DataTypeAttribute(DataType)

Menginisialisasi instans DataTypeAttribute baru kelas dengan menggunakan nama jenis yang ditentukan.

DataTypeAttribute(String)

Menginisialisasi instans DataTypeAttribute baru kelas dengan menggunakan nama templat bidang yang ditentukan.

Properti

Nama Deskripsi
CustomDataType

Mendapatkan nama templat bidang kustom yang terkait dengan bidang data.

DataType

Mendapatkan jenis yang terkait dengan bidang data.

DisplayFormat

Mendapatkan format tampilan bidang data.

ErrorMessage

Mendapatkan atau mengatur pesan kesalahan untuk dikaitkan dengan kontrol validasi jika validasi gagal.

(Diperoleh dari ValidationAttribute)
ErrorMessageResourceName

Mendapatkan atau mengatur nama sumber daya pesan kesalahan yang akan digunakan untuk mencari ErrorMessageResourceType nilai properti jika validasi gagal.

(Diperoleh dari ValidationAttribute)
ErrorMessageResourceType

Mendapatkan atau mengatur jenis sumber daya yang akan digunakan untuk pencarian pesan kesalahan jika validasi gagal.

(Diperoleh dari ValidationAttribute)
ErrorMessageString

Mendapatkan pesan kesalahan validasi yang dilokalkan.

(Diperoleh dari ValidationAttribute)
RequiresValidationContext

Mendapatkan nilai yang menunjukkan apakah atribut memerlukan konteks validasi.

(Diperoleh dari ValidationAttribute)
TypeId

Ketika diimplementasikan dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini.

(Diperoleh dari Attribute)

Metode

Nama Deskripsi
Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
FormatErrorMessage(String)

Menerapkan pemformatan ke pesan kesalahan, berdasarkan bidang data tempat kesalahan terjadi.

(Diperoleh dari ValidationAttribute)
GetDataTypeName()

Mengembalikan nama jenis yang terkait dengan bidang data.

GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari Attribute)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
GetValidationResult(Object, ValidationContext)

Memeriksa apakah nilai yang ditentukan valid sehubungan dengan atribut validasi saat ini.

(Diperoleh dari ValidationAttribute)
IsDefaultAttribute()

Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

(Diperoleh dari Attribute)
IsValid(Object, ValidationContext)

Memvalidasi nilai yang ditentukan sehubungan dengan atribut validasi saat ini.

(Diperoleh dari ValidationAttribute)
IsValid(Object)

Memeriksa apakah nilai bidang data valid.

Match(Object)

Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari Attribute)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
Validate(Object, String)

Memvalidasi objek yang ditentukan.

(Diperoleh dari ValidationAttribute)
Validate(Object, ValidationContext)

Memvalidasi objek yang ditentukan.

(Diperoleh dari ValidationAttribute)

Implementasi Antarmuka Eksplisit

Nama Deskripsi
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari Attribute)

Berlaku untuk

Lihat juga