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