• آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش هفتم
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش هفتم
1395/03/20 - 11:27:03 // MVC 5 & 6 // 0 نظر // 4009 بازدید

در بخش قبلی به بررسی ActionResult ها که در عمل خروجی Action Method ها میباشند پرداختیم. در این قسمت باید بررسی Action Parameters که در عمل ورودی Action Method ها هستند بپردازیم.

بسمه تعالی

آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها سیستم ویدئو کلوپ بخش هفتم

در بخش قبلی به بررسی ActionResult ها که در عمل خروجی Action Method ها میباشند پرداختیم. در این قسمت باید بررسی Action Parameters که در عمل ورودی Action Method ها هستند بپردازیم.

وقتی یک Request روی پروژه MVC بیاید و پارامتر هم داشته باشد ، MVC Framework به دنبال Parameter Name هایی همنام آنچه در Request قرار دارد خواهد گشت. اگر یک پارامتر همنام پیدا کند، مقدار پارامتر را به آن Target Action ارسال خواهد نمود و میتوانیم در سطح Controller یا ... از آن استفاده کنیم.

دقت کنید که این پارامتر میتواند از طریق URL یا QueryString یا داده های ارسالی درون Form ارسال شود.

خوب حالا باز به MoviesController بر میگردیم و این مبحث را پی میگیریم.یک Action Method جدید به نام Edit می سازیم. این متد باید یک پارامتر به نام id داشته باشد.

پروژه را اجرا و به آدرس /Movies/Edit/1 بروید.

خوب این یک نمونه از چگونگی استفاده از پارامتر در URL بود.

همین روند را میتوان به صورت Query String هم داشت .

خوب حالا درون Controller پارامتر id را به Movieid تغییر نام می دهیم.

حال باز به همان شکل قبلی از طریق Query String یک مقدار به id پاس میدهیم و بعد به خطا بر میخوریم.

پارامتر movieID هیچ کجا تعریف نشده و در نتیجه با پیام خطا روبرو میشویم. خوب جالا در QueryString نام پارامتر را تصحیح میکنیم.

مشکل حل شد، ولی آیا بدون QueryString و با استفاده از روند Routing به شکل زیر میتوانم از movieID استفاده کنم ؟. به شکل زیر دقت کنید .

در Routing باید پارامتر به صورت id باشد و movieId تعریف نشده است در نتیجه با خطا روبرو میشویم. اجازه بدهید به Default Route پروژه نگاهی بیندازیم.

همانطور که مشاهده میکنید ، پارامتر ما با نام id تعریف شده و هر گونه عبارت دیگری در صورت استفاده از این استاندارد Route سبب بروز خطا میشود. خوب پس اسم پارامتر را به همام id تغییر میدهیم و کار را پی میگیریم.

حال یک Action Method دیگر می سازیم و قصد داریم Optional Parameters را بررسی کنیم. به شکل زیر دقت کنید.

در این Action Method که Index نام دارد فرض میکنیم قرار است لیستی از Movie ها نمایش دهیم. دو پارامتر ورودی PageIndex و Sortby وجود دارند که باید بتوان به صورت Optional از آنها استفاده کرد ، چرا که شاید در حین کد نویسی نخواهیم شماره صفحه یا پارامتر Sort شدن را وارد کنیم. برای PageIndex که نوع Int است با اضافه کردن یک ؟ سبب خواهیم شد بتوان این مقدار را اصلن وارد ننمود . نوع String هم که خود بخود Nullable است و مشکلی ندارد. حال در بدنه متد Null بودن یا نبودن این مقادیر را برای int توسط HasValue و برای String از طریق IsnullOrWhiteSpace کنترل و تصمیم گیری می نماییم. مثلن اگر شماره صفحه داده نشده بود ، مقدار 1 را به صورت پیش فرض خواهیم داشت. خوب حالا باز پروژه را Runکنید.

با وجود وارد نکردن مقادیر به صورت پارامتر باز هم پارامترهای پیش فرض جایگزین شده و Action Method به درستی عمل کرده است. حال اگر این پارامترها را مقدار دهی کنیم ، وظعیت مشابه زیر خواهد شد .

دقت کنید که فعلن نمی توان با فرمت Url این مقادیر را وارد نمود، چرا که به یک Custom Route نیاز داریم و هنوز در مورد آن صحبتی نکرده ایم.

در قسمتهای بعدی به سراغ Routing و ایجاد Custom Route خواهیم رفت تا این مشکل کم کم حل شود.

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر