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 w celu dostosowania wyświetlania pola danych EmailAddress. Adresy e-mail są wyświetlane jako hiperlinki zamiast prostego tekstu, czyli dane dynamiczne wywnioskują z wewnętrznego typu danych. Przykładowy kod znajduje się w trzech częściach i wykonuje następujące kroki:

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

  • W skojarzonej klasie metadanych stosuje DataTypeAttribute atrybut do pola danych EmailAddress, określając wartość wyliczone.EmailAddress Wskazuje to 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 programu Visual Studio 2010 lub nowszego.

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

  • Witryna internetowa 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 w celu określenia sposobu 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 walidacji.

Aby uzyskać więcej informacji, zobacz wskazówki dotyczące danych dynamicznych ASP.NET.

Konstruktory

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

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 nie powiedzie się.

(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, jeśli walidacja nie powiedzie się.

(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 nie powiedzie się.

(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 Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu 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 wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość 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()

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

(Odziedziczone po Attribute)
IsValid(Object)

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

IsValid(Object, ValidationContext)

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

(Odziedziczone po ValidationAttribute)
Match(Object)

Po przesłonięciu 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 Objectelementu .

(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

_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 dla obiektu, który może służyć do pobierania 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)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też