Share via


DataTypeAttribute Kelas

Definisi

Menentukan nama jenis 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 DataTypeAttribute atribut untuk menyesuaikan tampilan bidang data EmailAddress. Alamat email ditampilkan sebagai hyperlink alih-alih sebagai teks sederhana, yang merupakan apa yang akan disimpulkan Data Dinamis dari tipe 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, ia menerapkan DataTypeAttribute atribut ke bidang data EmailAddress dengan menentukan EmailAddress nilai enumerasi. Ini menunjukkan templat bidang Text.ascx bahwa templat bidang tersebut harus mengkustomisasi 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 Sampel Produk Microsoft SQL Server: 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 untuk dikustomisasi. Untuk informasi selengkapnya, lihat Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Keterangan

Atribut ini DataTypeAttribute memungkinkan 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 mengubah cara 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 Anda 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.

Untuk informasi selengkapnya, lihat ASP.NET Panduan Data Dinamis.

Konstruktor

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

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 di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute.

(Diperoleh dari Attribute)

Metode

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 dari instans Type 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 di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan.

(Diperoleh dari Attribute)
IsValid(Object)

Memeriksa apakah nilai bidang data valid.

IsValid(Object, ValidationContext)

Memvalidasi nilai yang ditentukan sehubungan dengan atribut validasi saat ini.

(Diperoleh dari ValidationAttribute)
Match(Object)

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

(Diperoleh dari Attribute)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(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

_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