در معماری ام وی سی چه قراردادهایی وجود دارد ؟ برای کنترلرها ، ویوها و مدل ها باید از چه قراردادهایی پیروی کنیم ؟ چه بایدها و نبایدهایی در معماری MVC وجود دارد؟
درود دوستان ، آرزو ابراهیمی هستم مدرس دوره آموزش رایگان asp.net core ، و با یک مقاله آموزشی دیگر از سری مقالات اموزش net core. آموزش در خدمت شما دوستان هستم با من و این مقاله آموزشی همراه باشید.
سرفصلهای پست
قراردادهای MVC
از دو نوع قرارداد در پروژه های MVC می توانیم نام ببریم. نخستین گروه، پیشنهادهایی هستند برای نظم دادن به ساختار پروژه. به عنوان مثال، بهتر است فایل های جاوا اسکریپت و CSS رادر پوشهی wwwroot/lib جای دهید. این محلی است که سایر برنامه نویسان MVC انتظار یافتن آنها را داشته و از سویی دیگر ، ویژوال استدیو آنها را در همین محل نصب میکند ( به وسیلهی Package Manager که مدیریت بسته ها را بر عهده دارد ). با این حال ، چنانچه این فایلها را در محلی دیگر هم ذخیره کنید، تاجایی که تگ های link و script موجود در بخش head صفحه ها به مکان درست آنها اشاره میکنند ، مشکلی در اجرای پروژه پیش نخواهد آمد.
دومین نوع قراردادها مربوط به مفهومی به نام قرارداد بر پایهی پیکربندی (Convention Over Configuration) میشود. به طور مثال ، بر پایه این مفهوم ، تا جایی که از قرارداد مشخصی در مورد نام گذاری فایل ها پیروی میکنید ، نیازی به تعریف ارتباط بین نماها و کنترلرهای مربوط به آنها (و همین طور متد اکشن داخل کنترلر)، نخواهید داشت. نامگذاری درست ، مشخص میکند کدام کنترلر مربوط به کدام نما است.
قراردادهای مربوط به Controller ها
در معماری mvc بهتر است که پسوند نام های کلاس های کنترلر باید Controller باشد. مانند : ProductController یا AdminController
هنگامی که از کنترلر در محل دیگری از پروژه به عنوان مثال در یک فایل cshtml در یک تگ ، استفاده می کنید ، تنها از بخش نخست استفاده میکنید (Product یا Admin).
MVC به صورت خودکار Controller را اضافه کرده و سعی بر یافتن کلاس آن در پروژه میکند.
قراردادهای مربوط به View ها
Viewها در پوشه ای به آدرس Views/ControllerName ذخیره میشوند. بنابراین محل ویوی مربوط به کنترلر ProductController مسیری به شکل Views/Product است.
از نظر MVC نمای پیش فرض برای متد اکشن، نمایی هم نام آن متد است. بنابراین، نمای مربوط به اکشنی به نام List به صورت List.Cshtml نام گذاری می شود. به شکل کامل تر، نمای مربوط به اکشن List در کنترلرProducterController، مسیر و نامی به صورت Views/Product/List.cshtml/ خواهد داشت. نماهای پیش فرض ، زمانی که متد ()View را در متد اکشن به فرم زیر فراخوانی میکنید، برگشت داده میشوند:
return View()
برای نمایش نمای دیگری به غیر از نمای پیش فرض، باید از آن نام ببرید:
return View("MyOtherViews")
توجه کنید که اثری از پسوند فایل و یا مسیر آن در فرمان های بالا نیست. برای یافتن نما ،MVC ابتدا پوشه ای هم نام کنترلر و پس از آن مسیر Views/Shared/ را جست و جو می کند. معنی آن این است که می توانید پوشه هایی رادر چندین کنترلر کاربرد دارند در پوشه Shared جای دهید و MVC قادر به یافتن آنها خواهد بود.
قراردادهای مربوط به الگوی صفحه ها
بر اساس قراردادهای پیش فرض MVC، الگوهای صفحات cshtml بهتر است با نماد (آندرلاین) _ شروع شده و در پوشهی Views/Shared ذخیره شوند.
چنین الگویی به صورت پیش فرض بر اساس فایل Views/_ViewStart.Cshtml/ به همه ی صفحه هایی که الگویی برای خود مشخص نکنند ، اعمال می شود. از سویی دیگر ، با تغییر فایل ViewStart.Cshtml_ میتوانید الگویی دیگر را برای صفحات پروژه معرفی کنید.
@{ Layout = "~/_MyLayout.Cshtml"; }
و در پایان ، برای اینکه صفحه ای دارای الگو نباشد ، میتوانید با دستور زیر آن را غیر فعال کنید:
@{ Layout=null; }
به پایان این جلسه آموزشی رسیدیم سوالی داشتید حتما بپرسید پاسخگوی شما خواهم بود.😊