Programmēšana

Kā izmantot datu anotācijas C #

Datu anotācijas (pieejamas kā daļa no sistēmas. ComponentModel. DataAnnotations nosaukumvieta) ir atribūti, kurus var izmantot klasēm vai klases dalībniekiem, lai norādītu attiecības starp klasēm, aprakstītu, kā dati jāparāda lietotāja saskarnē, un norādiet validācijas kārtulas. Šajā rakstā ir runāts par datu anotācijām, kāpēc tās ir noderīgas un kā tās izmantot mūsu .NET Core lietojumprogrammās.

Lai strādātu ar šajā rakstā sniegtajiem kodu piemēriem, sistēmā jābūt instalētai Visual Studio 2019. Ja jums vēl nav kopijas, varat lejupielādēt Visual Studio 2019 šeit.

Izveidojiet konsoles lietojumprogrammas projektu Visual Studio 2019

Vispirms izveidosim .NET Core Console lietojumprogrammas projektu Visual Studio. Pieņemot, ka Visual Studio 2019 ir instalēta jūsu sistēmā, veiciet tālāk norādītās darbības, lai izveidotu jaunu .NET Core Console lietojumprogrammas projektu Visual Studio.

  1. Palaidiet Visual Studio IDE.
  2. Noklikšķiniet uz “Izveidot jaunu projektu”.
  3. Logā “Izveidot jaunu projektu” parādīto veidņu sarakstā atlasiet “Console App (.NET Core)”.
  4. Noklikšķiniet uz Tālāk.
  5. Nākamajā logā “Konfigurēt jauno projektu” norādiet jaunā projekta nosaukumu un vietu.
  6. Noklikšķiniet uz Izveidot.

Tādējādi Visual Studio 2019 tiks izveidots jauns .NET Core konsoles lietojumprogrammas projekts. Mēs izmantosim šo projektu, lai darbotos ar datu anotācijām šī raksta nākamajās sadaļās.

Iekļaujiet sistēmu. ComponentModel. DataAnnotations nosaukumvieta

Lai strādātu ar šajā rakstā sniegtajiem kodu paraugiem, jums jāiekļauj sistēma. ComponentModel. DataAnnotations nosaukumvieta jūsu programmā.

Ņemiet vērā, ka atribūtus izmanto, lai norādītu metadatus klasē vai rekvizītā. Datu anotācijas atribūtus kopumā var klasificēt šādi:

  • Validācijas atribūts - tiek izmantots, lai izpildītu entītiju rekvizītu validācijas kārtulas
  • Displeja atribūts - tiek izmantots, lai norādītu, kā dati jāparāda lietotāja saskarnē
  • Modelēšanas atribūts - tiek izmantots, lai norādītu attiecības, kas pastāv starp klasēm

Datu anotāciju atribūtu klases C #

Vārdtelpā System.ComponentModel.Annotations ir vairākas atribūtu klases, kuras var izmantot, lai definētu metadatus jūsu entītijas klasēm vai datu vadīklām. Visbiežāk izmantotie atribūti ir šādi:

  • ConcurrencyCheck
  • Atslēga
  • MaxLength
  • Nepieciešams
  • StringLength
  • Laika zīmogs

Datu anotāciju piemērs C #

Izveidojiet šo klasi failā ar nosaukumu Author.cs iepriekš izveidotajā konsoles lietojumprogrammā.

sabiedrības klase Autors

    {

[Obligāti (ErrorMessage = "Nepieciešama {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Vārdam jābūt vismaz 3 rakstzīmēm un ne vairāk kā 50 rakstzīmēm")]

[DataType (DataType.Text)]

publiskā virkne FirstName {get; komplekts; }

[Obligāti (ErrorMessage = "Nepieciešama {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Uzvārdam jābūt vismaz 3 un ne vairāk kā 50 rakstzīmēm")]

[DataType (DataType.Text)]

publiskā virkne Uzvārds {get; komplekts; }

[DataType (DataType.PhoneNumber)]

[Tālrunis]

publiskā virkne Tālruņa numurs {get; komplekts; }

[DataType (DataType.EmailAddress)]

[Epasta adrese]

publiska virkne E-pasts {get; komplekts; }

    }

Šis koda fragments parāda, kā jūs varat izveidot klases Autors gadījumu un piešķirt tā īpašībām vērtības.

Autors autors = jauns autors ();

autors.Vārds = "Joydip";

autors.LastName = "";

autors.PhoneNumber = "1234567890";

autors.E-pasts = "[email protected]";

Faila Program.cs galvenajā metodē varat ierakstīt šādu koda fragmentu, lai apstiprinātu savu modeli.

ValidationContext context = jauns ValidationContext (autors, null, null);

List validationResults = new List ();

bool valid = Validator.TryValidateObject (autors, konteksts, validationResults, true);

ja (! derīgs)

{

foreach (ValidationResult validationRestult validationResults)

  {

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

  }

}

ValidationContext ir klase, kas nodrošina kontekstu, kurā jāveic validācija. Validator klases statiskā metode TryValidateObject atgriež vērtību true, ja validācija ir veiksmīga, citādi - false. Tas arī atgriež ValidationResults sarakstu, kurā sīki aprakstītas visas validācijas, kuras modelī nav izdevušās. Visbeidzot, mēs esam izmantojuši foreach cilpu, lai atkārtotu ValidationResults sarakstu un parādītu kļūdas ziņojumus konsoles logā.

Pilns kodu saraksts ir norādīts zemāk.

sabiedrības klase Autors

    {

[Obligāti (ErrorMessage = "Nepieciešama {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Vārdam jābūt vismaz 3 rakstzīmēm un ne vairāk kā 50 rakstzīmēm")]

[DataType (DataType.Text)]

publiskā virkne FirstName {get; komplekts; }

[Obligāti (ErrorMessage = "Nepieciešama {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Uzvārdam jābūt vismaz 3 un ne vairāk kā 50 rakstzīmēm")]

[DataType (DataType.Text)]

publiskā virkne Uzvārds {get; komplekts; }

[DataType (DataType.PhoneNumber)]

[Tālrunis]

publiskā virkne Tālruņa numurs {get; komplekts; }

[DataType (DataType.EmailAddress)]

[Epasta adrese]

publiska virkne E-pasts {get; komplekts; }

    }

klases programma

    {      

static void Main (virkne [] args)

        {

Autors autors = jauns autors ();

autors.Vārds = "Joydip";

autors.LastName = ""; // Nav ievadīta vērtība

autors.PhoneNumber = "1234567890";

autors.E-pasts = "[email protected]";

ValidationContext context = jauns ValidationContext

(autors, null, null);

Saraksta validācijas rezultāti = jauns

Saraksts ();

bool valid = Validator.TryValidateObject

(autors, konteksts, validācijas rezultāti, patiesi);

ja (! derīgs)

            {

foreach (ValidationResult validationResult in

validācijas rezultāti)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Izpildot programmu, konsoles logā ir jāparāda šāds kļūdas ziņojums:

Nepieciešams uzvārds

Izveidojiet pielāgotu validācijas atribūtu C #

Lai izveidotu pielāgotu validācijas atribūtu klasi, jums jāpaplašina ValidationAttribute bāzes klase un jāignorē IsValid metode, kā parādīts tālāk sniegtajā koda fragmentā.

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

public class IsEmptyAttribute: ValidationAttribute

 {

publisks ignorēt bool IsValid (objekta vērtība)

     {

var inputValue = vērtība kā virkne;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Šis koda fragments parāda, kā pielāgoto atribūtu var izmantot, lai dekorētu klases Autors rekvizītus Vārds un Uzvārds.

[IsEmpty (ErrorMessage = "Nedrīkst būt tukšs vai tukšs.")]

publiskā virkne FirstName {get; komplekts; }

[IsEmpty (ErrorMessage = "Nedrīkst būt tukšs vai tukšs.")]

publiskā virkne Uzvārds {get; komplekts; }

Datu anotācijas sākotnēji tika ieviestas .NET 3.5 kā sistēmas sastāvdaļa. ComponentModel. DataAnnotations nosaukumvieta. Kopš tā laika tie ir kļuvuši par plaši izmantotu .NET funkciju. Varat izmantot datu anotācijas, lai definētu datu validācijas kārtulas vienā vietā un tādējādi izvairītos no tā, ka vienu un to pašu validācijas kodu ir jāraksta vēl un vēl.

Turpmākajā rakstā šeit apskatīsim, kā datu anotāciju var izmantot ASP.NET Core MVC lietojumprogrammās, lai veiktu modeļa validāciju.

Kā izdarīt vairāk C #

  • Kad izmantot abstraktu klasi un saskarni C #
  • Kā strādāt ar AutoMapper C #
  • Kā lietot lambda izteicienus C #
  • Kā strādāt ar Action, Func un Predicate delegātiem C #
  • Kā strādāt ar delegātiem C #
  • Kā ieviest vienkāršu reģistrētāju C #
  • Kā strādāt ar atribūtiem C #
  • Kā strādāt ar log4net C #
  • Kā ieviest krātuves dizaina modeli C #
  • Kā strādāt ar refleksiju C #
  • Kā strādāt ar filesystemwatcher C #
  • Kā veikt slinku inicializāciju C #
  • Kā strādāt ar MSMQ C #
  • Kā strādāt ar paplašināšanas metodēm C #
  • Kā mums izteikt lambda izteicienus C #
  • Kad lietot svārstīgo atslēgvārdu C #
  • Kā izmantot ienesīguma atslēgvārdu C #
  • Kā ieviest polimorfismu C #
  • Kā izveidot savu uzdevumu plānotāju C #
  • Kā strādāt ar RabbitMQ C #
  • Kā strādāt ar dubultošanos C #
  • Virtuālu un abstraktu metožu izpēte C #
$config[zx-auto] not found$config[zx-overlay] not found