سؤال

أنا أكتب مكونًا أود أن أكون قادرًا على استخدامه في كل من تطبيقات الويب MVC وWebForms، لكنني لست متأكدًا من كيفية التعامل مع الاختلافات بين كيفية التعامل مع HttpContext.

يتضمن المكون الخاص بي IHttpHandler مخصصًا (لـ WebForms) أو ActionResult مخصصًا (لـ MVC).

لذلك لدي بعض الأسئلة:

  • هل هناك طريقة لاستخدام IHttpHandler مع MVC دون كسر النموذج؟
  • هل من المقبول استخدام HttpContext.Current أثناء محاولة كتابة التعليمات البرمجية التي ستعمل لكليهما؟يبدو لي الأمر قاسيًا بعض الشيء (لست متأكدًا من السبب)، ولكن البديل سيكون كتابة وتنفيذ واجهة مطولة إلى حد ما للتعامل مع التجريد بين HttpContext وControllerContext.
  • هل أفعل هذا بشكل خاطئ تمامًا؟
هل كانت مفيدة؟

المحلول

  1. نعم، يمكنك فقط استخدام routes.IgnoreRoute("MyHandler.ashx").وسوف يعود إلى التعامل مع ASP.NET الأصلي دون كسر النموذج.
  2. لا، أعتقد أنه مناسب تمامًا للاستخدام HttpContext.Current.أعتقد أنه عند كتابة المعالج الخاص بك، فإن MVC غير قابل للتطبيق بشكل كبير.أنت تكتب الكود الخاص بك ل أسب.نت, وليس نماذج ويب ASP.NET MVC أو ASP.NET.من السهل جعله يعمل على كلا الطرازين (يعمل مع OOTB مع نماذج الويب، مع IgnoreRoute في MVC).قد تجعل الأمور أكثر تعقيدًا مما ينبغي!تذكر أن الغرض الوحيد من أنماط التصميم (مثل MVC) هو البساطة.لا تجعل الأمور معقدة!
  3. goto 2; فقط اكتب معالجًا بسيطًا!
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top