I MVVMCROSS, när man hanterar datavalidering och serialisering, spelar ofta två attribut i spel: `obligatoriskt 'och` jsonRequiredAttribute'. Dessa attribut tjänar olika syften och används i olika stadier av applikationslivscykeln.
krävs attribut
Attributet "Nödvändigt" är en del av namnet "System.componentModel.DataAnnotations" och används för modellvalidering. Det indikerar att en egenskap måste ha ett värde; Annars anses modellen vara ogiltig. Detta attribut används vanligtvis efter deserialisering under modellvalideringsfasen. Till exempel, i ASP.NET Core, om en egenskap är dekorerad med `[krävs]", kommer "ModelState" att vara ogiltig om den egenskapen saknas eller null under modellbindning.
I MVVMCROSS, medan attributet "obligatoriskt" kan användas för validering, interagerar det inte direkt med JSON -serialiserings- eller deserialiseringsprocesser. Istället handlar det mer om att säkerställa att vissa egenskaper är befolkade innan de fortsätter med affärslogik.
JSONRequiredAttribute
`JSONRequiredAttribute 'är specifikt för JSON -serialisering och deserialisering. Det används för att indikera att en egenskap måste vara närvarande i JSON -uppgifterna under deserialisering. Detta attribut är avgörande när man arbetar med JSON -data, eftersom det säkerställer att nödvändiga egenskaper alltid finns, vilket förhindrar potentiella fel på grund av saknade data.
I MVVMCross, när man använder JSON för navigering eller dataöverföring mellan visningsmodeller, säkerställer `JSONRequiredAttribute 'att de erforderliga egenskaperna serialiseras och deserialiseras korrekt. Detta är särskilt viktigt eftersom MVVMCross förlitar sig starkt på JSON för komplex parameter som passerar under navigering.
Nyckelskillnader
1. Syfte:
- "Obligatoriskt" är för allmän modellvalidering, vilket säkerställer att egenskaper är befolkade efter deserialisering.
- `JsonRequiredAttribute 'är specifikt för att säkerställa att egenskaper finns under JSON -deserialisering.
2. Användningssteg:
- "Obligatoriskt" används under modellvalidering efter deserialisering.
- `JsonRequiredAttribute 'används under JSON -deserialiseringen själv.
3. Omfattning:
- "Obligatoriskt" kan användas över olika dataformat och valideringsscenarier.
- `JsonRequiredAttribute 'är specifikt skräddarsydd för JSON -datahantering.
4. Beteende:
- Om en egenskap markerad med "obligatorisk" saknas kommer det att resultera i ett valideringsfel efter deserialisering.
- Om en egenskap markerad med `JsonRequiredAttribute 'saknas under JSON -deserialisering, kommer den vanligtvis att kasta ett undantag eller resultera i ett deserialiseringsfel.
Sammanfattningsvis, medan båda attributen används för att säkerställa dataintegritet, handlar "obligatorisk" mer om allmän modellvalidering, medan "JsonRequiredAttribute" är specifikt fokuserat på att säkerställa data närvaro under JSON -serialiserings- och deserialiseringsprocesser i MVVMCross -applikationer.
Citeringar:[1] https://github.com/mvvmcross/nplus1daysofmvvmcross/blob/master/n-39-crosslight-touch/crosslightouch/properties/annotations.cs
[2] https://www.mvvmcross.com/documentation/plugins/json
]
[4] https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/generators/observableproperty
[5] https://www.mvvmcross.com/documentation/geting-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
]
[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