Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross에서 필요한 속성 사용 및 JSONRequiredAttribute의 차이점은 무엇입니까?


MVVMCross에서 필요한 속성 사용 및 JSONRequiredAttribute의 차이점은 무엇입니까?


MVVMCross에서는 데이터 검증 및 직렬화를 다룰 때 두 가지 속성이 종종`필수 '및`jsonRequiredAttribute'라는 두 가지 속성이 수행됩니다. 이러한 속성은 다른 목적을 제공하며 응용 프로그램 라이프 사이클의 다른 단계에서 사용됩니다.

필수 속성

`필수 '속성은'System.componentModel.DataAnnotations '네임 스페이스의 일부이며 모델 유효성 검사에 사용됩니다. 속성에 값이 있어야 함을 나타냅니다. 그렇지 않으면 모델이 유효하지 않은 것으로 간주됩니다. 이 속성은 일반적으로 모델 검증 단계에서 사막화 후 사용됩니다. 예를 들어, ASP.NET CORE에서, 속성에`[필수]`로 장식 된 경우, 모델 바인딩 중에 해당 속성이 누락되거나 무효화되면`ModelState`는 유효하지 않습니다.

MVVMCross에서는 '필수'속성을 유효성 검사에 사용할 수 있지만 JSON 직렬화 또는 사막화 프로세스와 직접 상호 작용하지 않습니다. 대신, 비즈니스 로직을 진행하기 전에 특정 속성이 채워 지도록하는 것입니다.

jsonRequiredAttribute

`jsonrequiredattribute '는 JSON 직렬화 및 사막화에 따라 다릅니다. 사막화 중에 JSON 데이터에 속성이 있어야한다는 것을 나타내는 데 사용됩니다. 이 속성은 JSON 데이터로 작업 할 때 중요합니다. 필요한 속성이 항상 존재하는지 확인하여 누락 된 데이터로 인해 잠재적 오류가 방지됩니다.

MVVMCross에서는 뷰 모델 간의 탐색 또는 데이터 전송에 JSON을 사용할 때`jsonRequiredAttribute '를 사용하면 필요한 속성이 직렬화되고 제한화되도록합니다. MVVMCross는 내비게이션 중에 통과하는 복잡한 매개 변수에 대한 JSON에 크게 의존하기 때문에 특히 중요합니다.

주요 차이점

1. 목적 :
- '필수'는 일반 모델 검증을위한 것이며, 사막화 후 속성이 채워집니다.
-`jsonRequiredAttribute '는 특히 JSON 사막화 중에 속성이 존재하도록하기위한 것입니다.

2. 사용 단계 :
- '필수'는 사막화 후 모델 검증 중에 사용됩니다.
-`jsonRequiredAttribute '는 JSON Deserialization 자체에서 사용됩니다.

3. 범위 :
- '필수'는 다양한 데이터 형식 및 유효성 검사 시나리오에서 사용할 수 있습니다.
-`jsonRequiredAttribute`는 JSON 데이터 처리에 맞게 조정되었습니다.

4. 행동 :
- '필수'로 표시된 속성이 누락 된 경우 사막화 후에 검증 오류가 발생합니다.
-JSON 사막화 중에`jsonRequiredAttribute`가 표시된 속성이 누락 된 경우 일반적으로 예외가 발생하거나 사막화 오류가 발생합니다.

요약하면, 두 속성 모두 데이터 무결성을 보장하는 데 사용되지만 '필수'는 일반적인 모델 검증에 관한 것이며, 'JsonRequiredAttribute'는 MVVMCross 애플리케이션에서 JSON 직렬화 및 사막화 프로세스 중에 데이터 존재를 보장하는 데 특히 중점을 둡니다.

인용 :
[1] https://github.com/mvvmcross/nplus1daysofmmvvmcross/blob/mas
[2] https://www.mvvmcross.com/documentation/plugins/json
[3] https://stackoverflow.com/questions/49237767/using-required-and-jsonrequired-in-asp-core-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.stratheweb.com/2017/12/required-and-bindrequired-in-asp-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