In MVVMCross werden beim Umgang mit Datenvalidierung und Serialisierung häufig zwei Attribute ins Spiel kommen: "Erforderlich" und "JsonRequiredAttribute". Diese Attribute dienen unterschiedlichen Zwecken und werden in verschiedenen Stadien des Anwendungslebenszyklus verwendet.
Erforderliches Attribut
Das Attribut von "Fantasie" ist Teil des Namespace "system.comPonentModel.Dataannotations" und wird zur Modellvalidierung verwendet. Es zeigt an, dass eine Eigenschaft einen Wert haben muss; Andernfalls wird das Modell als ungültig angesehen. Dieses Attribut wird typischerweise nach der Deserialisierung während der Modellvalidierungsphase verwendet. Wenn beispielsweise in ASP.NET CORE eine Eigenschaft mit "Erforderlich]` `dekoriert ist, ist das` modelState` ungültig, wenn diese Eigenschaft während der Modellbindung fehlt oder null ist.
In mvvmcross kann das "erforderliche Attribut" zur Validierung verwendet werden, aber nicht direkt mit JSON -Serialisierung oder Deserialisierungsprozessen interagiert. Stattdessen geht es mehr darum, sicherzustellen, dass bestimmte Immobilien besiedelt sind, bevor sie mit der Geschäftslogik fortfahren.
JsonRequiredAttribute
Das "jsonRequiredAttribute" ist spezifisch für die JSON -Serialisierung und -Deserialisierung. Es wird verwendet, um anzugeben, dass während der Deserialisierung eine Eigenschaft in den JSON -Daten vorhanden sein muss. Dieses Attribut ist bei der Arbeit mit JSON -Daten von entscheidender Bedeutung, da immer die erforderlichen Eigenschaften vorhanden sind, wodurch potenzielle Fehler aufgrund fehlender Daten verhindert werden.
In MVVMCross stellt "JSONRequiredAttribute" bei der Verwendung von JSON für die Navigations- oder Datenübertragung zwischen Ansichtsmodellen sicher, dass die erforderlichen Eigenschaften korrekt serialisiert und deserialisiert werden. Dies ist besonders wichtig, da mvvmcross stark auf JSON für komplexe Parameterübergabe während der Navigation abhängt.
Schlüsselunterschiede
1. Zweck:
- "Erforderlich" ist für die allgemeine Modellvalidierung und stellen sicher, dass die Eigenschaften nach der Deserialisierung besiedelt werden.
- `JSONREQUIREDATTRIBUTE` ist speziell dafür, dass die Eigenschaften während der JSON -Deserialisierung vorhanden sind.
2. Nutzungsstufe:
- "Erforderlich" wird während der Modellvalidierung nach der Deserialisierung verwendet.
- `JsonRequiredAttribute` wird während der JSON -Deserialisierung selbst verwendet.
3. Umfang:
- "Erforderlich" kann in verschiedenen Datenformaten und Validierungsszenarien verwendet werden.
- `JsonRequiredAttribute` ist speziell auf JSON -Datenhandling zugeschnitten.
4. Verhalten:
- Wenn eine Eigenschaft, die mit "Erforderlich" gekennzeichnet ist, fehlt, führt dies zu einem Validierungsfehler nach der Deserialisierung.
- Wenn eine Eigenschaft, die mit "jsonRequiredAttribute" gekennzeichnet ist, während der JSON -Deserialisierung fehlt, wird in der Regel eine Ausnahme ausgelöst oder zu einem Deserialisierungsfehler führen.
Zusammenfassend ist zwar beider Attribute verwendet, um die Datenintegrität zu gewährleisten, aber es handelt sich um "Erforderlich" mehr um die allgemeine Modellvalidierung, während sich "JSonRequiredAttribute" speziell darauf konzentriert, die Datenpräsenz während der JSON -Serialisierung und der Deserialisierungsprozesse in MVVM -Cross -Anwendungen sicherzustellen.
Zitate:[1] https://github.com/mvvmcross/nplus1daysofmvmcross/blob/master/n-39-crosslight-touch/crosslighttouch/properties/annotations.cs
[2] https://www.mvmcross.com/documentation/plugins/json
[3] https://stackoverflow.com/questions/49237767/using-required--jsonRequired-in-spasp-Net-core-model-binding-with-json-body
[4] https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/generators/observableProperty
[5] https://www.mvmcross.com/documentation/getting-started/mvmcross-overview
[6] https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/
[7] https://www.mvmcross.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