V MVVMcrossu se pri obravnavi potrditve in serializacije podatkov pogosto igrata dva atributa: `potrebno` in` jsonrequiredAttribute`. Ti atributi služijo različnim namenom in se uporabljajo v različnih fazah življenjskega cikla aplikacije.
Zahtevani atribut
Atribut "Zahtevano" je del imenskega prostora "System.ComponentModel.Dataannotations" in se uporablja za validacijo modela. Nakazuje, da mora imeti lastnost vrednost; V nasprotnem primeru se model šteje za neveljaven. Ta atribut se običajno uporablja po deserializaciji med fazo validacije modela. Na primer, v jedru ASP.NET, če je lastnost okrašena z `[potrebno]`, bo `modelState` neveljaven, če ta lastnost manjka ali nična med vezavo modela.
V MVVMcrossu, medtem ko se atribut "Zahtevani" lahko uporablja za validacijo, ne vpliva neposredno na serializacijske ali deserializacijske procese JSON. Namesto tega gre bolj za zagotavljanje, da se nekatere nepremičnine naselijo, preden nadaljujejo s poslovno logiko.
jsonrequiredAttribute
`JsonRequiredattribute" je značilen za serializacijo in deserializacijo JSON. Uporablja se za označevanje, da mora biti v podatkih JSON med deserializacijo prisotna lastnost. Ta atribut je ključnega pomena pri delu s podatki JSON, saj zagotavlja, da so vedno prisotne potrebne lastnosti, kar preprečuje morebitne napake zaradi manjkajočih podatkov.
V MVVMcrossu pri uporabi JSON za navigacijo ali prenos podatkov med modeli ogledov `jsonRequiredAttribute` zagotavlja, da so zahtevane lastnosti pravilno in deserializirane. To je še posebej pomembno, ker se MVVMcross močno zanaša na JSON za kompleksni parameter med navigacijo.
Ključne razlike
1. namen:
- "Zahtevano" je za splošno potrjevanje modela, ki zagotavlja, da so lastnosti po deserializaciji napolnjene lastnosti.
- `jsonrequiredAttribute` je posebej za zagotavljanje, da so lastnosti med deserializacijo JSON prisotne.
2. faza uporabe:
- "Potrebno" se uporablja med validacijo modela po deserializaciji.
- `jsonrequiredAttribute` se uporablja med sama deserializacijo json.
3. Obseg:
- "Zahtevano" se lahko uporablja v različnih oblikah podatkov in scenarijih validacije.
- `jsonRequiredAttribute` je posebej prilagojen za ravnanje s podatki JSON.
4. vedenje:
- Če manjka lastnost, označena z "zahtevano", bo po deserializaciji povzročila napako pri potrditvi.
- Če lastnost, označena z `jsonRequiredAttribute`, med deserializacijo JSON manjka, bo običajno vrgla izjemo ali povzročila napako deserializacije.
Če povzamemo, medtem ko se oba atributa uporabljata za zagotavljanje celovitosti podatkov, je "potrebno" več za splošno potrjevanje modela, medtem ko je `jsonrequiredAttribute" posebej osredotočen na zagotavljanje prisotnosti podatkov med serializacijo JSON in deserializacijo v aplikacijah MVVMcross.
Navedbe:[1] https://github.com/mvvmcross/nplus1DaysOfmvmcross/blob/master/n-39-cross-touch/crosslight/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-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-bendrequired-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.serializacija.jsonrequiredtribute?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