ما الذي يجب أن يكون عليه هيكل عرض الملف/الدليل في ASP.NET MVC؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

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

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

هل هناك توقع ناشئ بشأن أنواع وجهات النظر المضمنة في هذه الدلائل؟على سبيل المثال، هل يجب أن تكون الصفحة الافتراضية لكل دليل هي Index.aspx؟هل يجب أن تتبع الصفحات اصطلاح تسمية مثل Create[controller].aspx أو List[controller].aspx وما إلى ذلك؟أم أنه لا يهم؟

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

المحلول

تعد تسمية دليل العرض وتسمية الملفات أمرًا مهمًا، لأن إطار عمل ASP.NET MVC يضع افتراضات معينة بشأنهما.إذا لم تتوافق مع هذه الافتراضات، فيجب عليك كتابة التعليمات البرمجية للسماح لإطار العمل بمعرفة ما تفعله.بشكل عام، يجب عليك الالتزام بهذه الافتراضات ما لم يكن لديك سبب وجيه لعدم القيام بذلك.

دعونا نلقي نظرة على أبسط إجراء تحكم ممكن:

    public ActionResult NotAuthorized()
    {
        return View();
    }

نظرًا لعدم تحديد اسم عرض في استدعاء View()، سيفترض إطار العمل أن اسم ملف العرض سيكون هو نفس اسم الإجراء.يحتوي إطار العمل على نوع يسمى ViewEngine والذي سيوفر الامتداد.إن ViewEngine الافتراضي هو WebFormViewEngine، والذي سيأخذ هذا الاسم ويلحق .aspx به.لذلك سيكون اسم الملف الكامل في هذه الحالة هو NotAuthorized.aspx.

ولكن في أي مجلد سيتم العثور على الملف؟مرة أخرى، يوفر ViewEngine هذه المعلومات.باستخدام WebFormViewEngine، سيتم البحث في مجلدين:~/المشاهدات/المشتركة و ~/المشاهدات/{controller}

لذا، إذا كانت وحدة التحكم الخاصة بك تسمى AccountController، فستظهر في ~/Views/Account

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

    public ActionResult NotAuthorized()
    {
        return View("Foo");
    }

لاحظ أنه مع WebFormViewEngine، يكون "اسم العرض" بشكل عام هو نفس اسم الملف، باستثناء الامتداد، لكن إطار العمل لا يتطلب ذلك الخاص بمحركات العرض الأخرى.

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

نصائح أخرى

فيما يتعلق بالأسماء المتوقعة لوجهات النظر، أعتقد أنها واحدة من تلك الأشياء التي سيحاول كل مشروع أو منظمة توحيدها.

كما أشرت في سؤالك، من الممكن أن تصبح بعض طرق العرض هذه (أو بشكل أكثر دقة، الإجراءات التي تعرضها) شائعة في جميع المجالات، مثل تلك الموجودة أدناه الشائعة في تطبيقات RoR التي تتبنى نموذج REST:

  • /الأوامر/ (أيفِهرِس)
  • /الطلبات/العرض/123
  • /الطلبات/تحرير/123
  • /الطلبات/التحديث/123
  • /الطلبات/جديد
  • /الطلبات/إنشاء
  • /الأوامر/تدمير/123

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

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

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