Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 必要な属性とJSonRequiredAttributeをMVVMCrossで使用することの違いは何ですか


必要な属性とJSonRequiredAttributeをMVVMCrossで使用することの違いは何ですか


MVVMCrossでは、データの検証とシリアル化を扱うとき、2つの属性が作用することがよくあります。これらの属性はさまざまな目的に役立ち、アプリケーションライフサイクルのさまざまな段階で使用されます。

###必要な属性

「必須」属性は、 `System.comPonentModel.DataAnnotationsの名前空間の一部であり、モデル検証に使用されます。プロパティには値が必要であることを示します。それ以外の場合、モデルは無効と見なされます。この属性は、通常、モデル検証フェーズ中に、脱審後の後に使用されます。たとえば、ASP.NETコアでは、プロパティが「[必須]」で装飾されている場合、モデルバインディング中にそのプロパティが欠落している場合、またはnullがnullである場合、「モデルステート」が無効になります。

MVVMCrossでは、「必須」属性を検証に使用できますが、JSONシリアル化または脱介入プロセスと直接相互作用することはありません。代わりに、ビジネスロジックを進める前に特定のプロパティが入力されるようにすることです。

jsonRequiredAttribute

「JSonRequiredAttribute」は、JSONのシリアル化と降下に固有です。これは、降下中にJSONデータにプロパティが存在する必要があることを示すために使用されます。この属性は、JSONデータを操作する場合に重要です。これは、必要なプロパティが常に存在することを保証し、データが欠落しているため潜在的なエラーを防ぐためです。

MVVMCrossでは、jsonをビューモデル間でナビゲーションまたはデータ転送に使用する場合、「JsonRequiredAttribute」は、必要なプロパティがシリアル化され、正しく脱isizeされていることを保証します。これは特に重要です。なぜなら、MVVMCrossはナビゲーション中に通過する複雑なパラメーターにJSONに大きく依存しているためです。

###キーの違い

1。目的:
- 「必須」は一般的なモデル検証のためであり、脱介入後にプロパティが入力されるようにします。
- `jsonRequiredAttribute`は、JSONの崩壊中にプロパティが存在するようにするために特にあります。

2。使用段階:
- 「必須」は、脱出後のモデル検証中に使用されます。
- `jsonRequiredAttribute`は、JSONの敏arialization自体の間に使用されます。

3。スコープ:
- 「必須」は、さまざまなデータ形式と検証シナリオで使用できます。
- `JSonRequiredAttribute`は、JSONデータ処理用に特に調整されています。

4。動作:
- 「必須」でマークされたプロパティが欠落している場合、脱出後に検証エラーが発生します。
-JSONの脱出中に「JSonRequiredAttribute」がマークされたプロパティが欠落している場合、通常、例外を投げたり、脱皮化エラーをもたらします。

要約すると、両方の属性はデータの整合性を確保するために使用されますが、「必須」は一般的なモデルの検証に関するものですが、「JSonRequiredAttribute」は、MVVMCrossアプリケーションでのJSONシリアル化と脱力化プロセス中のデータの存在を確保することに特に焦点を当てています。

引用:
[1] https://github.com/mvvmcross/nplus1daysofmvvvmvross/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/fundmentals/viewmodel-lifecycle
[11] https://learn.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-9.0