DataTypeAttribute Класс

Определение

Указывает имя дополнительного типа для связывания с полем данных.

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
Наследование
Производный
Атрибуты

Примеры

В следующем примере атрибут используется DataTypeAttribute для настройки отображения поля данных EmailAddress. Адреса электронной почты отображаются как гиперссылки, а не как простой текст, что будет выводить динамические данные из встроенного типа данных. Пример кода состоит из трех частей и выполняет следующие действия:

  • Он реализует частичный класс метаданных и связанный класс метаданных.

  • В связанном классе метаданных атрибут применяется DataTypeAttribute к полю данных EmailAddress, указав EmailAddress перечисленное значение. Это указывает на шаблон поля Text.ascx, который должен настроить отображение адресов электронной почты.

  • Он изменяет шаблон поля Text.ascx для настройки отображения полей данных 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

Чтобы скомпилировать и запустить пример кода, вам потребуется следующее:

  • Любой выпуск Visual Studio 2010 или более поздней версии.

  • Пример базы данных AdventureWorksLT. Сведения о том, как скачать и установить пример базы данных SQL Server, см. в разделе Microsoft SQL Server Примеры продуктов: База данных на GitHub. Убедитесь, что установлена правильная версия образца базы данных для версии SQL Server, которую вы используете.

  • Веб-сайт на основе данных. Это позволяет создать контекст данных для базы данных и создать класс, содержащий поле данных для настройки. Дополнительные сведения см. в разделе Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Комментарии

Атрибут DataTypeAttribute позволяет пометить поля с помощью типа, который является более конкретным, чем встроенный тип базы данных. Имя типа выбирается из DataType типа перечисления. Например, строковое поле данных, содержащее адреса электронной почты, можно указать в качестве EmailAddress типа. Затем эти сведения получают доступ к шаблонам полей, чтобы изменить способ обработки поля данных.

Атрибут используется DataTypeAttribute по следующим причинам:

  • Чтобы предоставить дополнительные сведения о типе для поля данных. Для этого необходимо применить DataTypeAttribute атрибут к полю данных в модели данных и указав дополнительное имя типа из DataType перечисления. Шаблон поля, обрабатывающий поле данных, может получить доступ к этим дополнительным сведениям о типе метаданных, чтобы определить способ обработки поля. Например, шаблон текстового поля может создавать гиперссылки для адресов электронной почты, встроенный тип которого является String.

  • Связывание пользовательского шаблона поля с полем данных. Затем указанный шаблон настраиваемого поля будет использоваться для обработки поля данных. Это альтернатива использованию атрибута UIHintAttribute .

При применении атрибута к полю DataTypeAttribute данных необходимо выполнить следующее:

  • Следуйте правилам использования атрибутов.

  • Реализуйте класс метаданных, содержащий поля данных, к которым необходимо применить атрибут.

  • При необходимости выдает ошибки проверки.

Конструкторы

Имя Описание
DataTypeAttribute(DataType)

Инициализирует новый экземпляр класса с помощью указанного DataTypeAttribute имени типа.

DataTypeAttribute(String)

Инициализирует новый экземпляр класса с помощью указанного DataTypeAttribute имени шаблона поля.

Свойства

Имя Описание
CustomDataType

Возвращает имя шаблона настраиваемого поля, связанного с полем данных.

DataType

Возвращает тип, связанный с полем данных.

DisplayFormat

Возвращает формат отображения поля данных.

ErrorMessage

Возвращает или задает сообщение об ошибке для связывания с элементом управления проверки, если проверка завершается ошибкой.

(Унаследовано от ValidationAttribute)
ErrorMessageResourceName

Возвращает или задает имя ресурса сообщения об ошибке для поиска ErrorMessageResourceType значения свойства, если проверка завершается ошибкой.

(Унаследовано от ValidationAttribute)
ErrorMessageResourceType

Возвращает или задает тип ресурса, используемый для поиска сообщений об ошибке, если проверка завершается ошибкой.

(Унаследовано от ValidationAttribute)
ErrorMessageString

Возвращает локализованное сообщение об ошибке проверки.

(Унаследовано от ValidationAttribute)
RequiresValidationContext

Возвращает значение, указывающее, требуется ли для атрибута контекст проверки.

(Унаследовано от ValidationAttribute)
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
FormatErrorMessage(String)

Применяет форматирование к сообщению об ошибке на основе поля данных, в котором произошла ошибка.

(Унаследовано от ValidationAttribute)
GetDataTypeName()

Возвращает имя типа, связанного с полем данных.

GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetValidationResult(Object, ValidationContext)

Проверяет, является ли указанное значение допустимым в отношении текущего атрибута проверки.

(Унаследовано от ValidationAttribute)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
IsValid(Object, ValidationContext)

Проверяет указанное значение относительно текущего атрибута проверки.

(Унаследовано от ValidationAttribute)
IsValid(Object)

Проверяет допустимость значения поля данных.

Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
Validate(Object, String)

Проверяет указанный объект.

(Унаследовано от ValidationAttribute)
Validate(Object, ValidationContext)

Проверяет указанный объект.

(Унаследовано от ValidationAttribute)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к

См. также раздел