Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Milyen különbségek vannak a szükséges attribútum használata és a jsonRequiredAttribute között az mvvmcross -ban


Milyen különbségek vannak a szükséges attribútum használata és a jsonRequiredAttribute között az mvvmcross -ban


Az MVVMCross -ban, amikor az adatok validálásával és a sorosítással foglalkoznak, két attribútum gyakran játszik szerepet: „kötelező” és „jsonRequiredAttribute”. Ezek az attribútumok különböző célokat szolgálnak, és az alkalmazás életciklusának különböző szakaszaiban használják.

szükséges attribútum

A „Szükséges” attribútum a „System.componentModel.Dataannotations” névtér részét képezi, és a modell validálásához használják. Ez azt jelzi, hogy egy ingatlannak értékkel kell rendelkeznie; Ellenkező esetben a modellt érvénytelennek tekintik. Ezt az attribútumot általában a draszteráció után, a modell validálási szakaszában használják. Például az ASP.NET Core -ban, ha egy tulajdonságot „[kötelező]” díszítik, akkor a „ModelState” érvénytelen lesz, ha ez a tulajdonság hiányzik vagy nulla a modellkötés során.

Az MVVMCross -ban, míg a „szükséges” attribútum felhasználható a validáláshoz, nem kölcsönhatásba lép közvetlenül a JSON sorosítási vagy desterializációs folyamatokkal. Ehelyett inkább arról szól, hogy bizonyos tulajdonságok kitöltődjenek, mielőtt folytatnák az üzleti logikát.

jsonRequiredAttribute

A `jsonRequiredAttribute` a JSON sorosítására és a draszterializációra vonatkozik. Arra szolgál, hogy jelezze, hogy egy tulajdonságnak jelen kell lennie a JSON -adatokban a vágyakozás során. Ez a tulajdonság döntő jelentőségű a JSON -adatokkal való munka során, mivel biztosítja, hogy mindig jelen legyen a szükséges tulajdonságok, megakadályozva a hiányzó adatok miatt a lehetséges hibákat.

Az MVVMCross -ban, amikor a JSON -t használják a navigációhoz vagy az adatátvitelhez a nézetmodellek között, a „JSonRequiredAttribute” biztosítja, hogy a szükséges tulajdonságok helyesen kerüljenek sorrendbe és deserializálódjanak. Ez különösen azért fontos, mert az MVVMCross nagymértékben támaszkodik a JSON -ra a navigáció során áthaladó komplex paraméterekre.

kulcsfontosságú különbségek

1. Cél:
- A „szükséges” az általános modell validálásához, biztosítva, hogy a tulajdonságok denterializációja után kitöltsenek.
- A `JsonRequiredAttribute` kifejezetten annak biztosítása érdekében, hogy a tulajdonságok jelen legyenek a JSON deserializációja során.

2. használati szakasz:
- A „Szükséges” -t használják a modell validálása során, a deserializáció után.
- A JSONRequiredAttribute `maga a JSON -dusterializáció során használják.

3. Hatály:
- A „Szükséges” felhasználható különféle adatformátumok és validálási forgatókönyvek között.
- A `jsonRequiredAttribute` kifejezetten a JSON -adatkezeléshez igazítva van.

4. Viselkedés:
- Ha hiányzik a „szükséges” jelöléssel ellátott tulajdonság, akkor a deserializáció után érvényesítési hibát eredményez.
- Ha a JSON deserializációja során hiányzik a „JSONREQUIDAttRIVE” -nel jelölt tulajdonság, akkor ez általában kivételt dob, vagy divatosodási hibát eredményez.

Összefoglalva: bár mindkét attribútumot az adatok integritásának biztosítására használják, a „szükséges” inkább az általános modell validálására vonatkozik, míg a „JSonRequiredAttribute” kifejezetten az adatok jelenlétének biztosítása a JSON sorosítási és a deserializációs folyamatok során az MVVMCross alkalmazásokban.

Idézetek:
[1] https://github.com/mvvmcross/nplus1daysofmvmcross/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-n-jsonrequired-in-asp-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.stathweb.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