دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۹
  • مرداد

جلسه ۰۴ : میسریابی ( Routing ) در ASP.NET MVC

  • دسته‌بندی‌ها :
جلسه ۰۴ : میسریابی ( Routing ) در ASP.NET MVC
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه:

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش ASP.NET MVC ، را دنبال می کنند. در قسمت قبلی با ساختار یک پروژه MVC آشنا شدید ، در این بخش قصد داریم Routing در ASP.NET MVC و میسریابی در ASP.NET MVC  را برای شما عزیزان توضیح دهیم . تا پایان این بخش همراه ما باشید.

      در برنامه ASP.NET Web Forms (نسخه قدیم ASP.NET)، هر URL میبایست با فایل خاص aspx مطابقت داشته باشد. به عنوان مثال، برای دستیابی به آدرس http: //domain/studentsinfo.aspx باید فایل studentsinfo.aspx که حاوی کد و تگ های HTML برای مدیریت و اجرای درخواست های خاصی است ، وجود داشته باشد.

      ASP.NET ویژگی مسیریابی را – برای از بین بردن اینکه حتما باید بوسیله فایل فیزیکی به URL آن دسترسی داشته باشید ، – معرفی کرد . مسیریابی ما را قادر می سازد تا الگوی URL که درخواست ها را ارسال می کند را تغیید دهیم.
      این پردازنده درخواست می تواند یک فایل یا کلاس باشد. در برنامه ASP.NET Webform، پردازنده درخواست خود فایل aspx است ولی در MVC، کلاس Controller و Action این کار را انجام میدهند. برای مثال، آدرس  http: // domain / students می تواند به http: //domain/studentsinfo.aspx در ASP.NET Webforms اشاره کند و همان URL در MVC به students – Controller و اکشن Index اشاره می کند (Action ها را در جلسات بعدی توضیح خواهیم داد).

      Route :

      Route الگوی URL و اطلاعات handler را تعریف می کند. تمام مسیرهای پیکربندی یک برنامه در RouteTable ذخیره شده و توسط موتور مسیریابی برای تعیین کلاس یا پرونده مناسب برای یک درخواست ورودی استفاده می شود.
      شکل زیر نشان دهنده روند مسیریابی است.
      Route

      Route

      پیکربندی Route :

      هر برنامه MVC باید حداقل یک نوع مسیریابی را پیکربندی کند . شما می توانید یک مسیر را در کلاس RouteConfig ثبت کنید، که در مسیر RouteConfig.cs در پوشه App_Start قرار دارد. شکل زیر نشان می دهد که چگونه مسیر را در کلاس RouteConfig پیکربندی کنید.
      پیکربندی Route

      پیکربندی Route

      همانطور که در شکل بالا می بینید، مسیر با استفاده از متد توسعه یافته MapRoute واقع در RouteCollection پیمایش می شود، که نام آن “Default” است، الگوی آدرس “{id} / {action} / {controller}” که پارامتر id میتواند پر نشود.
      اگر موارد (“{id} / {action} / {controller}”) در URL درخواست ورودی وجود نداشته باشد ، مسیر Defaults ، مشخص می کند که کدام controller، و action یا مقدار پارامتر id باید بصورت پیشفرض مورد استفاده قرار گیرند.
      به همان شیوه، می توانید مسیرهای دیگر را با استفاده از متد توسعه یافته MapRoute واقع در RouteCollection پیکربندی کنید. RouteCollection در واقع یک پراپرتی از کلاس RouteTable است.

      URL Pattern :

      الگوی URL تنها پس از قسمت نام دامنه در نظر گرفته می شود. به عنوان مثال، الگوی “{id} / {action} / {controller}” مانند localhost: 1234 / {controller} / {action} / {id} عمل میکند . هر چیزی پس از “localhost: 1234” به عنوان نام controller در نظر گرفته می شود. به همین ترتیب، هر چیزی پس از نام controller ، به عنوان نام action و سپس مقدار پارامتر id شناخته می شود.
      URL Pattern

      URL Pattern

      اگر URL پس از نام دامنه چیزی نداشته باشد، controller و action پیش فرض درخواست داده خواهد شد. به عنوان مثال، با تایپ آدرس http: // lcoalhost: 1234 به صورت پیش فرض HomeController و اکشن Index به عنوان پارامترهای URL ارسال می شوند.
      جدول زیر نشان می دهد که هر مسیر با توجه به نوع آدرس دهی که دارد ، کدام controller و action و پارامتر Id، را درخواست می دهد.
      IdActionControllerURL
      nullIndexHomeControllerhttp://localhost/home
      ۱۲۳IndexHomeControllerhttp://localhost/home/index/123
      nullAboutHomeControllerhttp://localhost/home/about
      nullContactHomeControllerhttp://localhost/home/contact
      nullIndexStudentControllerhttp://localhost/student
      ۱۲۳EditStudentControllerhttp://localhost/student/edit/123

      Routes های چندگانه (Multiple Routes) :

      شما همچنین می توانید چند مسیر سفارشی دیگر را با استفاده از متد MapRoute پیکربندی کنید. برای اینکار باید حداقل دو پارامتر را که عبارتند از نام مسیر و الگوی آدرس را در MapRoute ارائه دهید. مثال زیر را در نظر بگیرید که مسیر “Student” را ثبت می کند.

      مثال : 

      همانطور که در کد بالا نشان داده شده است، URL برای مسیر Student الگوی students/{id} است، که مشخص می کند هر URL که با domainName / student شروع می شود، توسط StudentController باید پردازش شود.
      توجه داشته باشید که ما الگوی {action} را در URL مشخص نکرده ایم در اینصورت هر URL که با کلمه Student شروع می شود، بصورت پیش فرض از اکشن index استفاده  می کند. به این ترتیب Controller و action پیش فرض را برای رسیدگی به درخواست هر URL که با domainname / students شروع می شود، تعیین کردیم.
      چارچوب MVC هر مسیر را به ترتیب ارزیابی می کند. و با اولین مسیر پیکربندی شروع می شود و اگر آدرس ورودی الگوی URL مسیر را نداشت ، مسیر دوم و بهمین ترتیب را بررسی می کند . در مثال بالا، موتور مسیریابی ابتدا الگوی مسیریابی students را بررسی می کند و اگر آدرس ورودی با students شروع نشود، آنگاه الگوی مسیریابی دوم که مسیر پیش فرض است را در نظر می گیرد.
      جدول زیر نشان می دهد که چگونه URL های مختلف به مسیر Student  درخواست می فرستند :
      IdActionControllerURL
      ۱۲۳IndexStudentControllerhttp://localhost/student/123
      ۱۲۳IndexStudentControllerhttp://localhost/student/index/123
      ۱۲۳IndexStudentControllerhttp://localhost/student?Id=123

      محدودیت Route :

      شما همچنین می توانید محدودیت های مقدار پارامتر را با تنظیم route constraints اعمال کنید. به عنوان مثال، مسیر زیر، یک محدودیت در پارامتر id را اعمال می کند که مقدار شناسه باید عددی باشد.

      مثال : 

      بنابراین اگر مقدار غیر عددی برای پارامتر id داده شود، این درخواست با الگوی مسیریابی دیگری بررسی می شود یا اگر مسیرهای تطبیقی وجود نداشته باشند، خطای “The resource could not be found” نمایش داده می شود.

      ثبت مسیر (Register Routes) :

      اکنون، پس از پیکربندی تمام مسیرها در کلاس Configuration ، باید آن را در رویداد Application_Start در Global.asax ثبت کنید. تا تمام الگوهای مسیریابی که تعریف شده اند به Route Table نیز اضافه شوند .

      مثال : 

      شکل زیر نشان دهنده روند ثبت مسیر است.

      ثبت مسیر (Register Routes)

      ثبت مسیر (Register Routes)

       

      چند نکته جهت بخاطر سپردن :

      1. مسیریابی نقش مهمی در چارچوب MVC دارد. مسیریابی درخواست آدرس URL را به فایل فیزیکی یا کلاس (controller class in MVC) ارسال می کند .
      2. Route شامل الگو URL و اطلاعات handler است. الگوی URL بعد از نام دامنه شروع می شود.
      3. Route ها را می توان در کلاس RouteConfig پیکربندی کرد. همچنین مسیرهای چندگانه سفارشی نیز می توانند پیکربندی شوند.
      4. Route constraints محدودیت هایی را بر مقادیر پارامترها اعمال می کند.
      5. مسیر باید در رویداد Application_Start در فایل Global.asax.cs ثبت شود.

       

      در این بخش با مسیریابی (Routing) در ASP.NET MVC آشنا شدید و یاد گرفتید که چگونه الگوی مسیریابی را تغییر دهید ، در بخش بعدی قصد داریم شما را با Controller در ASP.NET MVC آشنا کنیم.

      QR:  جلسه ۰۴ : میسریابی ( Routing ) در ASP.NET MVC
      به اشتراک بگذارید