سبد خرید 0

وبلاگ

متد های child action در ASP.NET MVC

تمامی اکشن متدهای داخل Controller ها ، قابل فراخوانی از طریق نوار آدرس مرورگر (به صورت مستقیم) یا داخل View ها هستند . در ASP.NET MVC  می توان متد هایی تعریف کرد که دسترسی به آنها از طریق نوار آدرس مرورگر امکان پذیر نباشد که به این متد ها Child action می گویند . نوع child action دقیقا مانند سایز action method ها می باشد با این تفاوت که یک property با نام ChildActionOnly به متد اضافه می شود .
خاصیت ChildActionOnly مشخص می کند که دسترسی به متد باید از طریق child request  باشد .

child request  چیست :

child request یعنی نمی توان به یک متد به صورت مستقیم از طریق url دسترسی داشت . برای دسترسی یه متد هایی که با خصوصیت childActionOnly تعریف شده اند باید در داخل view ها اقدام به دسترسی نمود.
به صورت زیر یک متد chid action تعریف می شود :

در صورتی که قصد نمایش child action را از طریق نوار آدرس (به صورت مستقیم) داشته باشید با خطای زیر رو به رو خواهید شد :

چه موقع باید از child action ها استفاده کرد :
– اگر تصمیم دارید که یک View توسط کاربران به طور مستقیم قابل دسترسی نباشد آن را به صورت Child Action تعریف کنید .
– Child action ها از بکار بردن کدهای تکرار جلوگیری می کنند و باعث کاهش حجم کدنویسی خواهند شد . تقریبا شباهت آنها از نظر کارکرد شبیه partial View ها هستند که می توانید در چندین جای مختلف آن ها را به کار ببرید .

نحوه استفاده :
همانطور گفتیم برای فراخوانی child action  های نمی توانید از طریق url اقدام به نمایش آنها کنید ، برای دسترسی به آنها در داخل view مورد نظر از طریق متد html.action قابل دسترسی می باشند . تکه کد فوق در داخل یک View  اکشنی به اسم childactionName را اجرا خواهد کرد :

 با یک مثال بهتر متوجه کارکرد این نوع متدها خواهید شد . فرض کنید پروژه ای داریم که در صفحه های مختلف آن نیاز داریم  تا اخبار را با گروه های(category) مشخص  نمایش دهیم برای این کار می توان یک child action  نوشت و یک پارامتر برای آن تعیین کرد به عنوان category و در هر Viewیی که نیاز به نمایش اخبار داشته باشیم کافیست متد child action را با category مشخص فراخونی کنیم ، کدهای زیر نمایش دهنده این موضوع هستند :

حال در هر  view یی که قصد داشته باشیم  اخبار را نمایش دهیم به صورت زیر عمل خواهیم کرد :

 اگر کنترلر View جاری با کنترلری که متد action child  در آن قرار دارد ، یکی می باشد نیازی به نوشتن نام کنترلر نمی باشد اگر هم نوشته شود مشکلی ندارد ، در این حالت به صورت زیر می باشد:

 همانطور که در کدهای بالا مشاهده کردید ، متدهای child action از تکثیر یک یا چند قطعه کد در جاهای مختلف پروژه جلوگیری می کنند .

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up