ใน MVVMCROSS ข้อกำหนดที่จำเป็นและ BindRequired ไม่สามารถใช้งานได้โดยตรงเนื่องจากอยู่ในแกน ASP.NET อย่างไรก็ตามการทำความเข้าใจบทบาทของพวกเขาใน ASP.NET Core สามารถช่วยชี้แจงได้ว่าแนวคิดที่คล้ายกันอาจนำไปใช้ใน MVVMcross ได้อย่างไร
ASP.NET CORE Context
- จำเป็นต้องมี: แอตทริบิวต์นี้ทำให้มั่นใจได้ว่าคุณสมบัติไม่ได้เป็นโมฆะหรือว่างเปล่าหลังจากการผูกโมเดลเกิดขึ้น มันถูกใช้เป็นหลักเพื่อวัตถุประสงค์ในการตรวจสอบเพื่อให้แน่ใจว่าเขตข้อมูลบังคับจะถูกกรอกในรูปแบบหรือสถานการณ์การป้อนข้อมูล [1] [3] [6]
- BindRequiredattribute: แอตทริบิวต์นี้ทำให้มั่นใจได้ว่าคุณสมบัติมีอยู่ในข้อมูลที่เข้ามาในระหว่างการผูกโมเดล แตกต่างจากที่ต้องการจะตรวจสอบการมีอยู่ของคุณสมบัติในข้อมูลคำขอไม่ใช่แค่ความไม่แน่นอน [1] [3] [4]
บริบท MVVMCROSS
ใน MVVMcross โฟกัสอยู่ที่การเชื่อมโยงข้อมูลระหว่างมุมมองและ ViewModel เฟรมเวิร์กไม่ได้ใช้แอตทริบิวต์ที่จำเป็นหรือมี bindrequired โดยตรง แต่ขึ้นอยู่กับโหมดการเชื่อมโยงเช่น OneWay หรือ Twoway เพื่อจัดการการซิงโครไนซ์ข้อมูลระหว่างมุมมองและ ViewModel [2] [7]
- โหมดการเชื่อมโยงใน MVVMCROSS:
- OneWay: ข้อมูลไหลจาก ViewModel ไปยังมุมมอง
- Twoway: ข้อมูลไหลทั้งสองวิธีระหว่างมุมมองและ ViewModel นี่คือโหมดเริ่มต้นสำหรับการผูกที่กำหนดเองใน MVVMCROSS [7]
เพื่อให้ได้ฟังก์ชั่นที่คล้ายคลึงกับที่ต้องการหรือ bindrequired ใน MVVMCROSS โดยทั่วไปคุณจะใช้ตรรกะการตรวจสอบความถูกต้องภายใน ViewModel ของคุณหรือใช้การเชื่อมโยงที่กำหนดเองเพื่อให้แน่ใจว่าคุณสมบัติบางอย่างได้รับการปรับปรุงอย่างถูกต้อง ตัวอย่างเช่นคุณอาจใช้ InotifyPropertyChanged เพื่อแจ้งมุมมองการเปลี่ยนแปลงใน ViewModel เพื่อให้มั่นใจว่าข้อมูลนั้นทันสมัยอยู่เสมอ [2] [8]
การใช้การตรวจสอบความถูกต้องใน mvvmcross
ในขณะที่ MVVMCROSS ไม่สนับสนุนโดยตรงหรือ bindRequired คุณสามารถใช้การตรวจสอบความถูกต้องโดยการตรวจสอบค่าว่างหรือค่าว่างภายในคุณสมบัติของ ViewModel ของคุณ สิ่งนี้สามารถทำได้ด้วยตนเองหรือโดยใช้เฟรมเวิร์กการตรวจสอบที่รวมเข้ากับ MVVMcross
สรุป
โดยสรุปในขณะที่จำเป็นและ bindrequired นั้นมีความเฉพาะเจาะจงกับ ASP.NET Core เพื่อให้มั่นใจว่าการแสดงข้อมูลและการตรวจสอบความถูกต้อง MVVMCROSS ขึ้นอยู่กับกลไกการเชื่อมโยงและตรรกะการตรวจสอบความถูกต้องที่กำหนดเองเพื่อจัดการความสมบูรณ์ของข้อมูล หากคุณต้องการตรวจสอบให้แน่ใจว่าข้อมูลบางอย่างมีอยู่หรือถูกต้องใน MVVMCROSS โดยทั่วไปคุณจะใช้ตรรกะนี้ภายใน ViewModel หรือผ่านการเชื่อมโยงที่กำหนดเอง
การอ้างอิง:[1] https://blog.dominikasikorska.pl/required-vs-bindrequired/
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://dotnettutorials.net/lesson/bindnever-and-bindrequired-attribute-in-asp-net-core-mvc/
[4] https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/
[5] https://www.mvvmcross.com/documentation/plugins/methodbinding
[6] https://towardsdev.com/mastering-the-use-of-requiredattribute-a-detailed-comparison-of-required-vs-bindrequired-b3feaf108ef5
[7] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-used-in-used-in-a-project
[8] https://www.mvvmcross.com/documentation/advanced/custom-data-binding