Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hva er forskjellene mellom å bruke den nødvendige attributtet og JSonRequiredAttribute i MVVMCROSS


Hva er forskjellene mellom å bruke den nødvendige attributtet og JSonRequiredAttribute i MVVMCROSS


I MVVMCROSS, når du arbeider med datavalidering og serialisering, kommer to attributter ofte inn i spill: `nødvendig` og `jsonRequiredAttribute`. Disse attributtene tjener forskjellige formål og brukes i forskjellige stadier av applikasjonslivssyklusen.

Nødvendig attributt

Attributtet `nødvendige er en del av` System.componentModel.Dataannotations` Namespace og brukes til modellvalidering. Det indikerer at en eiendom må ha en verdi; Ellers anses modellen som ugyldig. Denne attributtet brukes vanligvis etter deserialisering, i løpet av modellvalideringsfasen. For eksempel, i ASP.NET -kjernen, hvis en eiendom er dekorert med `[påkrevd]`, vil `ModelState` være ugyldig hvis den egenskapen mangler eller null under modellbinding.

I MVVMCROSS, mens den `nødvendige 'attributtet kan brukes til validering, samhandler den ikke direkte med JSON -serialisering eller deserialiseringsprosesser. I stedet handler det mer om å sikre at visse egenskaper blir befolket før de fortsetter med forretningslogikken.

jsonRequiredAttribute

'JsonRequiredAttribute` er spesifikk for JSON -serialisering og deserialisering. Det brukes til å indikere at en eiendom må være til stede i JSON -dataene under deserialisering. Denne attributtet er avgjørende når du arbeider med JSON -data, da det sikrer at nødvendige egenskaper alltid er til stede, og forhindrer potensielle feil på grunn av manglende data.

I MVVMCROSS, når du bruker JSON for navigasjon eller dataoverføring mellom visningsmodeller, sikrer `JsonRequiredAttribute` at de nødvendige egenskapene blir serialisert og deserialisert riktig. Dette er spesielt viktig fordi MVVMCROSS er avhengig av JSON for kompleks parameter som passerer under navigasjonen.

viktige forskjeller

1. Formål:
- `nødvendig` er for generell modellvalidering, og sikrer at egenskaper er befolket etter deserialisering.
- `JsonRequiredAttribute` er spesielt for å sikre at egenskaper er til stede under JSON -deserialisering.

2. Bruksstadium:
- `nødvendig` brukes under modellvalidering, etter deserialisering.
- `JsonRequiredAttribute` brukes under Self Json Deserialization.

3. Omfang:
- `kreves` kan brukes på tvers av forskjellige dataformater og valideringsscenarier.
- `JSonRequiredAttribute` er spesielt skreddersydd for JSON -datahåndtering.

4. Oppførsel:
- Hvis en egenskap merket med `kreves 'mangler, vil det føre til en valideringsfeil etter deserialisering.
- Hvis en eiendom merket med `jsonRequiredAttribute` mangler under JSON -deserialisering, vil den vanligvis kaste et unntak eller resultere i en deserialiseringsfeil.

Oppsummert, mens begge attributtene brukes til å sikre dataintegritet, handler `nødvendig` mer om generell modellvalidering, mens `JSonRequiredAttribute` er spesielt fokusert på å sikre datatilstedeværelse under JSON -serialisering og deserialiseringsprosesser i MVVMCROSS -applikasjoner.

Sitasjoner:
[1] https://github.com/mvvmcross/nplus1daysofmvvmcross/blob/master/n-39-crosslight-touch/crosslighttouch/properties/annotations.cs
[2] https://www.mvvmcross.com/documentation/plugins/json
[3] https://stackoverflow.com/questions/49237767/using-required-and-jsonrequired-in-asp-net-core-model-binding-with-json-body
[4] https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/generators/observableProperty
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/
[7] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[8] https://www.mvvmcross.com/documentation/fundamentals/navigation
[9] https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonRequiredAttribute?view=net-9.0
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[11] https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-9.0