DataTypeAttribute Klasa

Definicja

Określa nazwę dodatkowego typu do skojarzenia z polem danych.

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
Dziedziczenie
Pochodne
Atrybuty

Przykłady

W poniższym przykładzie użyto atrybutu DataTypeAttribute , aby dostosować wyświetlanie pola danych EmailAddress. Adresy e-mail są wyświetlane jako hiperlinki, a nie jako prosty tekst, co dane dynamiczne będą wnioskować z wewnętrznego typu danych. Przykładowy kod znajduje się w trzech częściach i wykonuje następujące kroki:

  • Implementuje klasę częściową metadanych i skojarzą klasę metadanych.

  • W skojarzonej klasie metadanych stosuje DataTypeAttribute atrybut do pola danych EmailAddress, określając EmailAddress wyliczona wartość. Wskazuje to na szablon pola Text.ascx, który powinien dostosować wyświetlanie adresów e-mail.

  • Modyfikuje szablon pola Text.ascx, aby dostosować wyświetlanie pól danych 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

Aby skompilować i uruchomić przykładowy kod, potrzebne są następujące elementy:

  • Dowolna wersja Visual Studio 2010 lub nowsza.

  • Przykładowa baza danych AdventureWorksLT. Aby uzyskać informacje na temat pobierania i instalowania przykładowej bazy danych SQL Server, zobacz Microsoft SQL Server Przykłady produktów: Database on GitHub. Upewnij się, że zainstalowano poprawną wersję przykładowej bazy danych dla wersji SQL Server, która jest uruchomiona.

  • Witryna sieci Web oparta na danych. Dzięki temu można utworzyć kontekst danych dla bazy danych i utworzyć klasę zawierającą pole danych do dostosowania. Aby uzyskać więcej informacji, zobacz Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Uwagi

Atrybut DataTypeAttribute umożliwia oznaczanie pól przy użyciu typu bardziej szczegółowego niż typ wewnętrzny bazy danych. Nazwa typu jest wybierana z DataType typu wyliczenia. Na przykład jako typ można określić EmailAddress pole danych ciągu zawierające adresy e-mail. Te informacje są następnie dostępne przez szablony pól, aby zmodyfikować sposób przetwarzania pola danych.

Atrybut jest DataTypeAttribute używany z następujących powodów:

  • Aby podać dodatkowe informacje o typie dla pola danych. W tym celu należy zastosować DataTypeAttribute atrybut do pola danych w modelu danych i określając dodatkową nazwę typu z DataType wyliczenia. Szablon pola, który przetwarza pole danych, może uzyskać dostęp do tych dodatkowych informacji o typie metadanych, aby określić sposób przetwarzania pola. Na przykład szablon pola tekstowego może generować hiperlinki dla adresów e-mail, których typem wewnętrznym jest String.

  • Aby skojarzyć szablon pola niestandardowego z polem danych. Określony szablon pola niestandardowego będzie następnie używany do przetwarzania pola danych. Jest to alternatywa dla używania atrybutu UIHintAttribute .

Po zastosowaniu atrybutu DataTypeAttribute do pola danych należy wykonać następujące czynności:

  • Postępuj zgodnie z regułami użycia atrybutów.

  • Zaimplementuj klasę metadanych zawierającą pola danych, do których chcesz zastosować atrybut.

  • W razie potrzeby wystawiaj błędy weryfikacji.

Konstruktory

Nazwa Opis
DataTypeAttribute(DataType)

Inicjuje DataTypeAttribute nowe wystąpienie klasy przy użyciu określonej nazwy typu.

DataTypeAttribute(String)

Inicjuje DataTypeAttribute nowe wystąpienie klasy przy użyciu określonej nazwy szablonu pola.

Właściwości

Nazwa Opis
CustomDataType

Pobiera nazwę niestandardowego szablonu pola skojarzonego z polem danych.

DataType

Pobiera typ skojarzony z polem danych.

DisplayFormat

Pobiera format wyświetlania pola danych.

ErrorMessage

Pobiera lub ustawia komunikat o błędzie do skojarzenia z kontrolką weryfikacji, jeśli walidacja zakończy się niepowodzeniem.

(Odziedziczone po ValidationAttribute)
ErrorMessageResourceName

Pobiera lub ustawia nazwę zasobu komunikatu o błędzie do użycia w celu wyszukania ErrorMessageResourceType wartości właściwości w przypadku niepowodzenia walidacji.

(Odziedziczone po ValidationAttribute)
ErrorMessageResourceType

Pobiera lub ustawia typ zasobu, który ma być używany do wyszukiwania komunikatów o błędzie, jeśli walidacja zakończy się niepowodzeniem.

(Odziedziczone po ValidationAttribute)
ErrorMessageString

Pobiera zlokalizowany komunikat o błędzie weryfikacji.

(Odziedziczone po ValidationAttribute)
RequiresValidationContext

Pobiera wartość wskazującą, czy atrybut wymaga kontekstu weryfikacji.

(Odziedziczone po ValidationAttribute)
TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute.

(Odziedziczone po Attribute)

Metody

Nazwa Opis
Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
FormatErrorMessage(String)

Stosuje formatowanie do komunikatu o błędzie na podstawie pola danych, w którym wystąpił błąd.

(Odziedziczone po ValidationAttribute)
GetDataTypeName()

Zwraca nazwę typu skojarzonego z polem danych.

GetHashCode()

Zwraca kod skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
GetValidationResult(Object, ValidationContext)

Sprawdza, czy określona wartość jest prawidłowa w odniesieniu do bieżącego atrybutu weryfikacji.

(Odziedziczone po ValidationAttribute)
IsDefaultAttribute()

Po zastąpieniu w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.

(Odziedziczone po Attribute)
IsValid(Object, ValidationContext)

Weryfikuje określoną wartość w odniesieniu do bieżącego atrybutu weryfikacji.

(Odziedziczone po ValidationAttribute)
IsValid(Object)

Sprawdza, czy wartość pola danych jest prawidłowa.

Match(Object)

Po zastąpieniu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
Validate(Object, String)

Sprawdza poprawność określonego obiektu.

(Odziedziczone po ValidationAttribute)
Validate(Object, ValidationContext)

Sprawdza poprawność określonego obiektu.

(Odziedziczone po ValidationAttribute)

Jawne implementacje interfejsu

Nazwa Opis
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie obiektu, którego można użyć do uzyskania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Zapewnia dostęp do właściwości i metod uwidocznionych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też