سؤال

أنا أستخدم خريطة الهيكل مثل واجهة متجر MVC التي صممها Rob Conery ولدي AdminController ولذا للوصول إليها أكتب فقط:

website/Admin/action

ومع ذلك، إذا أخطأت في تهجئة اسم وحدة التحكم، أحصل على الخطأ أدناه:

تفاصيل الاستثناء:System.ArgumentNullException:قيمة لا يمكن أن تكون فارغة.اسم المعلمة:مفتاح

هناك خطأ يحدث على هذا السطر:

Controller controller = ObjectFactory.GetInstance(controllerType) as Controller;

هل لدى أي شخص أي أفكار حول كيفية التعامل مع هذا الخطأ أو عدم السماح بحدوثه على الإطلاق وربما انتقل إلى صفحة 404؟؟

هتافات مقدما

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

المحلول

المشكلة هي أنه إذا لم يكن هناك وحدة تحكم باسم النوع المتوقع (أي.إذا كتب المستخدم "امدين"سوف تبحث الفئة الأساسية ControllerFactory عن"امدينوحدة التحكم" ولن تجدها، ولكنها ستستمر في استدعاء طريقة التجاوز الخاصة بك).في هذه الحالة، سيكون المتغير ControllerType خاليًا.لذلك يمكنك فقط التحقق من وجوده فارغًا قبل السطر الذي نقلته ثم (إذا كان خاليًا) إما:

أ) قم بتنفيذ تصحيح إملائي مثل الذي يقترحه cfeduke

أو ب) ما عليك سوى طرح HttpException برمز الحالة 404 (ذلك يجب تسبب الخطأ 404 الذي تبحث عنه).

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

نصائح أخرى

لديك بضعة خيارات مختلفة (أو إذا كنت تريد، أمرين يمكنك الجمع بين لحل). لإزالة بعض المشاكل المحتملة بين شريط كرسي وعنوان يمكنك تنفيذ حل SOUNDEX < وأ href = "http://www.csharphelp.com/archives2/archive394.html" يختلط = "نوفولو noreferrer"> في C # باستخدام إطار التوجيه الجديد إلى يحتمل التقاط بعض الأخطاء الإملائية وتغيير مسار لهم ل URL المتوقع (و / أو إضافة توجيهات لماذا تعتقد أن أخطاء إملائية أو طلبات المشتركة أن يكون). هذا، ومع ذلك، لا حل من شأنه أن يحل المشكلة تماما لذلك ستحتاج إلى ننظر في ل تنفيذ صفحات الخطأ المخصصة للتطبيق الخاص بك.

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