DataTypeAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy adatmezőhöz társítandó további típus nevét adja meg.
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
- Öröklődés
- Származtatott
- Attribútumok
Példák
Az alábbi példa az DataTypeAttribute e-mailaddress adatmező megjelenítésének testreszabásához használja az attribútumot. Az e-mail-címek egyszerű szöveg helyett hivatkozásokként jelennek meg, ami a dinamikus adatok belső adattípusából következtetne. A példakód három részből áll, és a következő lépéseket hajtja végre:
Implementál egy metaadat-részleges osztályt és a társított metaadatosztályt.
A társított metaadatosztályban az DataTypeAttribute attribútumot az enumerált érték megadásával alkalmazza az EmailAddress E-mailAddress adatmezőre. Ez azt jelzi a Text.ascx mezősablonnak, hogy testre kell szabnia az e-mail-címek megjelenítését.
Módosítja a Text.ascx mezősablont az EmailAddress adatmezők megjelenítésének testreszabásához.
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
A példakód fordításához és futtatásához a következőkre van szükség:
A Visual Studio 2010-ben vagy újabb verzióiban.
Az AdventureWorksLT mintaadatbázis. A SQL Server mintaadatbázis letöltéséről és telepítéséről a GitHub Microsoft SQL Server Termékminták: Adatbázis című témakörben olvashat. Győződjön meg arról, hogy a mintaadatbázis megfelelő verzióját telepíti a futó SQL Server verziójához.
Adatvezérelt webhely. Így létrehozhat egy adatkörnyezetet az adatbázishoz, és létrehozhatja a testre szabandó adatmezőt tartalmazó osztályt. További információért lásd
Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.
Megjegyzések
Az DataTypeAttribute attribútum lehetővé teszi a mezők megjelölését az adatbázis belső típusánál pontosabb típus használatával. A típus neve ki van jelölve az DataType enumerálási típusból. Típusként EmailAddress megadható például egy e-mail-címeket tartalmazó sztringadatmező. Ezt az információt ezután a mezősablonok érik el, hogy módosítsák az adatmező feldolgozásának módját.
Az attribútumot a DataTypeAttribute következő okokból használja:
További típusinformációk megadása egy adatmezőhöz. Ehhez alkalmazza az attribútumot az DataTypeAttribute adatmodell egyik adatmezőjére, és adja meg a további típusnevet az DataType enumerálásból. Az adatmezőt feldolgozó mezősablon hozzáférhet ezekhez a metaadattípus-információkhoz a mező feldolgozásának módjának meghatározásához. A szövegmezősablon például olyan e-mail-címekre mutató hivatkozásokat hozhat létre, amelyek belső típusa .
StringEgyéni mezősablon társítása adatmezővel. Ezután a megadott egyéni mezősablont fogja használni az adatmező feldolgozásához. Ez egy alternatíva az UIHintAttribute attribútum használatára.
Ha az DataTypeAttribute attribútumot egy adatmezőre alkalmazza, a következőket kell tennie:
Kövesse az attribútumhasználati szabályokat.
Implementálja azt a metaadatosztályt, amely tartalmazza azokat az adatmezőket, amelyekre alkalmazni szeretné az attribútumot.
Szükség szerint érvényesítési hibákat ad ki.
További információ: ASP.NET Dinamikus adatokra vonatkozó irányelvek.
Konstruktorok
| Name | Description |
|---|---|
| DataTypeAttribute(DataType) |
Inicializálja az DataTypeAttribute osztály új példányát a megadott típusnév használatával. |
| DataTypeAttribute(String) |
Inicializálja az DataTypeAttribute osztály új példányát a megadott mezősablonnév használatával. |
Tulajdonságok
| Name | Description |
|---|---|
| CustomDataType |
Lekéri az adatmezőhöz társított egyéni mezősablon nevét. |
| DataType |
Lekéri az adatmezőhöz társított típust. |
| DisplayFormat |
Lekéri az adatmező megjelenítési formátumát. |
| ErrorMessage |
Ha az ellenőrzés sikertelen, hibaüzenetet kap vagy állít be egy érvényesítési vezérlőhöz való társításhoz. (Öröklődés forrása ValidationAttribute) |
| ErrorMessageResourceName |
Lekéri vagy beállítja a hibaüzenet erőforrásnevét a tulajdonság értékének kereséséhez, ha az ErrorMessageResourceType ellenőrzés sikertelen. (Öröklődés forrása ValidationAttribute) |
| ErrorMessageResourceType |
Lekéri vagy beállítja az erőforrástípust a hibaüzenetek kereséséhez, ha az ellenőrzés sikertelen. (Öröklődés forrása ValidationAttribute) |
| ErrorMessageString |
Lekéri a honosított érvényesítési hibaüzenetet. (Öröklődés forrása ValidationAttribute) |
| RequiresValidationContext |
Olyan értéket kap, amely jelzi, hogy az attribútumhoz érvényesítési környezet szükséges-e. (Öröklődés forrása ValidationAttribute) |
| TypeId |
Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap. (Öröklődés forrása Attribute) |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása Attribute) |
| FormatErrorMessage(String) |
Formázást alkalmaz egy hibaüzenetre annak az adatmezőnek az alapján, ahol a hiba történt. (Öröklődés forrása ValidationAttribute) |
| GetDataTypeName() |
Az adatmezőhöz társított típus nevét adja vissza. |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása Attribute) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| GetValidationResult(Object, ValidationContext) |
Ellenőrzi, hogy a megadott érték érvényes-e az aktuális érvényesítési attribútumra vonatkozóan. (Öröklődés forrása ValidationAttribute) |
| IsDefaultAttribute() |
Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke. (Öröklődés forrása Attribute) |
| IsValid(Object, ValidationContext) |
Ellenőrzi a megadott értéket az aktuális érvényesítési attribútummal kapcsolatban. (Öröklődés forrása ValidationAttribute) |
| IsValid(Object) |
Ellenőrzi, hogy az adatmező értéke érvényes-e. |
| Match(Object) |
Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e. (Öröklődés forrása Attribute) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| Validate(Object, String) |
Ellenőrzi a megadott objektumot. (Öröklődés forrása ValidationAttribute) |
| Validate(Object, ValidationContext) |
Ellenőrzi a megadott objektumot. (Öröklődés forrása ValidationAttribute) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása Attribute) |