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 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) |