سؤال

أنا أستخدم AjaxSubmit لنشر نموذج وهناك عمليات التحقق من جانب الخادم التي تم إجراؤها باستخدام XVAL (WrueException Way). أنا لا أستخدم طريقة Try/Catch لإضافة خطأ إلى النموذج ثم إرسال للعرض. بدلاً من ذلك - أرغب في استخدام Attibute HandleRror وفي Onexception أقوم بإضافة الأخطاء إلى النموذج. المشكلة الرئيسية هي كيف أحصل على هذه الأخطاء كنتائج في مكالمة AJAX؟

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

المحلول

لا يوجد حل رائع مدمج الآن. يتطلب القيام بذلك بشكل صحيح إطار التحقق من صحة العميل (لأنه ، لعرض الأخطاء ، تحتاج إلى تغيير صفحة HTML ديناميكيًا) ، وحتى وقت قريب ، لم يكن لدى ASP.NET MVC ذلك. ومع ذلك ، قدمت ASP.NET MVC 2 Preview 2 التحقق من صحة من جانب العميل ، لذلك من المعقول افتراض أن شيئًا ما قد يكون مدمجًا في الإطار قريبًا.

في غضون ذلك ، ومع ذلك ، لن يساعدك HandleRorattribute. تعرف HealtherRorAttribute فقط كيفية إعادة التوجيه إلى صفحة خطأ ، وهو ما لا تريد القيام به عمومًا استجابةً لخطأ في صحة من جانب الخادم حتى مع منشور "عادي" ، وبالتأكيد ليس مع منشور Ajax.

هناك بالفعل سيناريوهين مختلفين تحتاج إلى التعامل معه:

  1. أخطاء التحقق من الصحة ليست إخفاقات كارثية ؛ إنها ببساطة بيانات مستخدم سيئة ، والتي يجب أن تتوقعها. تحتاج فقط إلى إعادة المعلومات إلى الصفحة ، بحيث يمكن تمييز الصفحة لإخبار المستخدم بكيفية إصلاح بياناته.
  2. تحتاج أيضًا إلى التعامل مع الإخفاقات الكارثية ، مثل الاستثناءات غير المتوقعة. هذا أقرب إلى ما تفعله HandleRorArattribute ، بقدر ما يمكنك عرض رسالة إلى مستخدم ، لكن لا يمكنك بالضرورة مطابقة هذه الرسالة مع حقول محددة على صفحتك.

للتعامل مع السيناريو الأول للخطأ ، تحتاج إلى لف حالة النموذج إلى كائن سيكون قابلاً للتطبيق في رمز JavaScript ؛ JSON هو الملاءمة الواضحة هنا. تحتاج بعد ذلك إلى الحصول على رمز JavaScript على جانب العميل الذي يحلل هذا الكائن ويمثل حقول النموذج. يكون هذا أسهل إذا قمت بربط إطار التحقق من صحة من جانب العميل الحالي ، والذي يحتوي بالفعل على رمز لتمييز حقول النماذج.

للتعامل مع النوع الثاني من الأخطاء ، يمكنك تمديد مقبض ConferRorAttribute من أجل توفير JSON بدلاً من HTML في حالة فشل كارثي. مرة أخرى ، ستحتاج إلى كتابة رمز JavaScript الذي سيتم تنفيذه في حالة حدوث فشل - JQuery's Global ajaxError الحدث مفيد هنا - يكتشف معلومات الخطأ المنظمة التي قمت بإنشائها وعرض نوعًا من الرسائل المفيدة للمستخدم.

إذا كان كل هذا يبدو متورطًا بعض الشيء ، حسنًا ، فهذا هو السبب في أنه قد يكون من المنطقي الانتظار ومعرفة ما الذي سيتم مدمجه عند إصدار MVC 2 أخيرًا.

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