DataTypeAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) |