ما هي بعض أفضل الممارسات من أجل التحقق من نموذج في ASP.NET MVC؟

StackOverflow https://stackoverflow.com/questions/1436006

سؤال

وأنا غير مهتم في إجابات بشأن التحقق من صحة العميل أو نموذج ملزمة. حقا، يمكن أن ينطبق هذا السؤال على أي مكتبة فئة الوصول إلى البيانات خارج MVC، ولكن قضايا متشابهة، على ما أعتقد.

وأنا باستخدام نمط مستودع حاليا للوصول إلى البيانات مع بلدي الكيانات (نماذج). حاليا مستودعات التعامل مع كل من عمليات الخام، لكنني أعتقد أنني أردت لنماذج بلدي ليكون مسؤولا عن إنقاذ أنفسهم من أجل القيام التحقق من الصحة. كيف يجب أن أتعامل مع هذا؟

وبوسعي أن أضيف طريقة IsValid في نماذج بلادي أن مستودعات يمكن أن يطلق التي يمكن قم بتشغيل كل من منطق عملي قبل مستودع يحفظ نموذج، ولكن بعد ذلك لا شيء يفرض على مستودعات أن نطلق على هذا المنطق التحقق من صحة، أليس كذلك؟

إذا أريد نماذج لطريقة حفظ، ثم ما هي الطريقة المناسبة لهم لإنقاذ أنفسهم؟ لا ينبغي أن ندعو مرة أخرى إلى مستودع يفعلون ذلك؟

وأية أفكار عن كيف يجب التعامل مع هذا؟

وشكرا!

هل كانت مفيدة؟

المحلول

لا يوجد شيء خطأ في حد ذاته مع السماح للنموذج للتحقق من صحة حفظ عمليات. بل لعله من المجدي عودة كاذبة أو رمي استثناء. وتنشأ الصعوبة عندما يجب ثم تقديم التغذية الراجعة للمستخدم لماذا دخلت بياناتها غير صالح.

ويمكن وينبغي أن يحدث التحقق في وجهة النظر الأولى. يمكن بسهولة أن يتم ذلك من جانب العميل باستخدام مكتبات مسج. ولكن البيانات لا يزال يتعين التحقق من جانب الخادم بعد أن يقدم للمستخدم، وإذا لا تزال هناك مشاكل مع البيانات، يجب أن لا يزال يقدم تفسيرا للمستخدم.

ونظرا لضرورة توفير ردود فعل المستعملين، التحقق من جانب الخادم من هذا النوع يمكن أن تقدم على نحو فعال في عرض نموذج الكائن. يخدم هذا الكائن البيانات غرضين: الأول، أنها تلخص البيانات التي تمر بين عرض وحدة تحكم في كائن كتابة بشدة. ثانيا، لأنها توفر مكان مناسب لإجراء التحقق من الصحة، دون الحاجة إلى منطق التحقق من صحة في أي وحدة تحكم أو طريقة العرض.

إذا LINQ إلى SQL يستخدم، يمكن عرض نموذج يكون امتدادا للطبقة نموذج البيانات الفعلية، وذلك باستخدام الكلمة جزئية في C #. هذا يتيح لك استخدام قدرات ORM الحالية لينق ولدت لفئة SQL، في حين تغير اتجاهها على وظيفة التحقق من صحة إضافية. وأفترض أن هذا يعمل بنفس الطريقة في إطار الكيان، وORMs أخرى.

موصوفة

وعرض نماذج في NerdDinner تعليمي هنا: http://nerddinnerbook.s3.amazonaws.com/Part6.htm

ويوصف عملية التحقق من الصحة هنا:
http://nerddinnerbook.s3.amazonaws.com/Part3.htm

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top