Programování

Jak používat datové anotace v C #

Datové anotace (k dispozici jako součást oboru názvů System. ComponentModel. DataAnnotations) jsou atributy, které lze použít na třídy nebo členy třídy k určení vztahu mezi třídami, popisu způsobu zobrazení dat v uživatelském rozhraní a určení pravidel ověření. Tento článek hovoří o anotacích dat, proč jsou užitečné a jak je používat v našich aplikacích .NET Core.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt konzolové aplikace v Visual Studio 2019

Nejprve si vytvořme projekt konzolové aplikace .NET Core v sadě Visual Studio. Za předpokladu, že je ve vašem systému nainstalovaná sada Visual Studio 2019, postupujte podle níže uvedených kroků a vytvořte nový projekt konzolové aplikace .NET Core v sadě Visual Studio.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Console App (.NET Core)“.
  4. Klikněte na Další.
  5. V dalším okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Klikněte na Vytvořit.

Tím se vytvoří nový projekt aplikace konzoly .NET Core v sadě Visual Studio 2019. Tento projekt použijeme pro práci s datovými anotacemi v následujících částech tohoto článku.

Zahrnout systém. ComponentModel. Obor názvů DataAnnotations

Chcete-li pracovat s ukázkami kódu uvedenými v tomto článku, měli byste zahrnout Systém. ComponentModel. Obor názvů DataAnnotations ve vašem programu.

Atributy se používají k určení metadat třídy nebo vlastnosti. Atributy anotace dat lze obecně rozdělit na následující:

  • Atribut ověření - Používá se k vynucení pravidel ověření vlastností entit
  • Atribut zobrazení - Používá se k určení, jak mají být data zobrazena v uživatelském rozhraní
  • Atribut modelování - slouží k určení vztahu, který existuje mezi třídami

Třídy atributů anotací dat v C #

Obor názvů System.ComponentModel.Annotations obsahuje několik tříd atributů, které lze použít k definování metadat pro vaše třídy entit nebo ovládací prvky dat. Mezi nejčastěji používané atributy patří následující:

  • Kontrola souběžnosti
  • Klíč
  • Maximální délka
  • Požadované
  • StringLength
  • Časové razítko

Příklad anotací dat v C #

Vytvořte následující třídu v souboru s názvem Author.cs v konzolové aplikaci, kterou jsme vytvořili dříve.

veřejná třída Autor

    {

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Jméno by mělo mít minimálně 3 znaky a maximálně 50 znaků")]

[DataType (DataType.Text)]

public string FirstName {get; soubor; }

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Příjmení by mělo mít minimálně 3 znaky a maximálně 50 znaků")]

[DataType (DataType.Text)]

veřejný řetězec Příjmení {get; soubor; }

[DataType (DataType.PhoneNumber)]

[Telefon]

veřejný řetězec PhoneNumber {get; soubor; }

[DataType (DataType.EmailAddress)]

[Emailová adresa]

public string E-mail {get; soubor; }

    }

Následující fragment kódu ukazuje, jak můžete vytvořit instanci třídy Author a přiřadit hodnoty jejím vlastnostem.

Autor autor = nový Autor ();

author.FirstName = "Joydip";

author.LastName = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Následující úryvek kódu můžete napsat v hlavní metodě souboru Program.cs a ověřit tak váš model.

ValidationContext context = nový ValidationContext (autor, null, null);

List validationResults = new List ();

bool valid = Validator.TryValidateObject (autor, kontext, validationResults, true);

if (! valid)

{

foreach (ValidationResult validationResult v validationResults)

  {

Console.WriteLine ("{0}", validationResult.ErrorMessage);

  }

}

ValidationContext je třída, která vám poskytuje kontext, kde by mělo být provedeno ověření. Statická metoda TryValidateObject třídy Validator vrací true, pokud je ověření úspěšné, jinak false. Vrátí také seznam ValidationResults, který podrobně popisuje všechna ověření, která na modelu selhala. Nakonec jsme použili smyčku foreach k iteraci seznamu ValidationResults a zobrazení chybových zpráv v okně konzoly.

Kompletní seznam kódů je uveden níže pro vaši informaci.

veřejná třída Autor

    {

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Jméno by mělo mít minimálně 3 znaky a maximálně 50 znaků")]

[DataType (DataType.Text)]

public string FirstName {get; soubor; }

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Příjmení by mělo mít minimálně 3 znaky a maximálně 50 znaků")]

[DataType (DataType.Text)]

veřejný řetězec Příjmení {get; soubor; }

[DataType (DataType.PhoneNumber)]

[Telefon]

veřejný řetězec PhoneNumber {get; soubor; }

[DataType (DataType.EmailAddress)]

[Emailová adresa]

public string E-mail {get; soubor; }

    }

třídní program

    {      

static void Main (řetězec [] args)

        {

Autor autor = nový Autor ();

author.FirstName = "Joydip";

author.LastName = ""; // Nebyla zadána žádná hodnota

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = nový ValidationContext

(autor, null, null);

Seznam validationResults = nový

Seznam();

bool valid = Validator.TryValidateObject

(autor, kontext, validationResults, true);

pokud (! platné)

            {

foreach (ValidationResult validationResult v

validationResults)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Když spustíte program, měla by se v okně konzoly zobrazit následující chybová zpráva:

Příjmení je povinné

Vytvořte vlastní atribut ověření v C #

Chcete-li vytvořit vlastní třídu atributu ověření, měli byste rozšířit základní třídu ValidationAttribute a přepsat metodu IsValid, jak je ukázáno v níže uvedeném fragmentu kódu.

[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Inherited = false)]

veřejná třída IsEmptyAttribute: ValidationAttribute

 {

veřejné přepsání bool IsValid (hodnota objektu)

     {

var inputValue = hodnota jako řetězec;

návrat! string.IsNullOrEmpty (inputValue);

     }

 }

Následující fragment kódu ukazuje, jak můžete pomocí vlastního atributu ozdobit vlastnosti FirstName a LastName třídy Author.

[IsEmpty (ErrorMessage = "Nemělo by být prázdné nebo prázdné.")]

public string FirstName {get; soubor; }

[IsEmpty (ErrorMessage = "Nemělo by být prázdné nebo prázdné.")]

veřejný řetězec Příjmení {get; soubor; }

Datové anotace byly původně zavedeny v .NET 3.5 jako součást systému. ComponentModel. Obor názvů DataAnnotations. Od té doby se staly široce používanou funkcí v .NET. Můžete využít výhod anotací dat k definování pravidel ověřování dat na jednom místě a vyhnout se tak nutnosti znovu a znovu psát stejný ověřovací kód.

V budoucím příspěvku zde se podíváme na to, jak lze anotaci dat použít v aplikacích ASP.NET Core MVC k provedení ověření modelu.

Jak dělat více v C #

  • Kdy použít abstraktní třídu vs. rozhraní v C #
  • Jak pracovat s AutoMapperem v C #
  • Jak používat výrazy lambda v C #
  • Jak pracovat s delegáty Action, Func a Predicate v C #
  • Jak pracovat s delegáty v C #
  • Jak implementovat jednoduchý záznamník v C #
  • Jak pracovat s atributy v C #
  • Jak pracovat s log4net v C #
  • Jak implementovat vzor návrhu úložiště v C #
  • Jak pracovat s odrazem v C #
  • Jak pracovat se souborovým systémem v C #
  • Jak provést línou inicializaci v C #
  • Jak pracovat s MSMQ v C #
  • Jak pracovat s metodami rozšíření v C #
  • Jak na nás lambda výrazy v C #
  • Kdy použít volatilní klíčové slovo v C #
  • Jak používat klíčové slovo výnos v C #
  • Jak implementovat polymorfismus v C #
  • Jak vytvořit svůj vlastní plánovač úloh v C #
  • Jak pracovat s RabbitMQ v C #
  • Jak pracovat s n-ticí v C #
  • Zkoumání virtuálních a abstraktních metod v C #
$config[zx-auto] not found$config[zx-overlay] not found