DataTypeAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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) |