• ASP.NET Core 1 – قسمت بیستم
ASP.NET Core 1 – قسمت بیستم
1395/02/03 - 21:21:52 // MVC 5 & 6 // 0 نظر // 4156 بازدید

حالا وقت ارسال Form به سمت سرور و ذخیره داده ها میباشد. اینجاست که MVC اطلاعات را از Http Request دریافت و تحرکات لازم را انجام خواهد داد.

بسمه تعالی

ASP.NET Core 1 قسمت بیستم

حالا وقت ارسال Form به سمت سرور و ذخیره داده ها میباشد. اینجاست که MVC اطلاعات را از Http Request دریافت و تحرکات لازم را انجام خواهد داد.

 
 

در قسمتهای قبلی مشاهده کردیم که مثلن با استفاده از Query String میتوانستیم داده را به صورت ورودی ارسال کنیم ، ولی برای داده های سنگین و پیچیده با استفاده از Property ها و نام آنهاست که سیستم مقادیر را استخراج و استفاده خواهد نمود . مثلن در مثال ما Name و Cuisine هم دو Property بوده و دارای مقدار میباشند . برای بررسی این متد Post باید HomeController را دستخوش یکسری تغییر قرار دهیم .

باید یک متد Create دیگر با پارامتر ورودی ایجاد کنیم . دقت کنید با لحاظ کردن Entities NameSpace متد Create میتواند مانند زیر باشد .

مساله اینجاست که شاید Entity من خیلی بزرگ باشد و شاید همه فیلدها را لازم نباشد در مثلن Create داشته باشیم ، اینجاست که دوباره داشتن یک ViewModel پیشنهاد میگردد. یک ViewModel دارای دقیقن فیلدهایی که لازم داریم . پس یک ViewModel جدید میسازیم .

نکته : یک پروژه بزرگ ممکن است N عدد ViewModel پیدا کند و هیچ جای نکرانی وجود ندارد . وجود مثلن 200 فایل و C# Class هیچ ضرری به شما نخواهد زد ، ضمن اینکه بخشهایی از Business Logic را هم میتوان وارد ViewModel ها نمود . در فولدر ViewModels یک فایل جدید ایجاد کنید . اسم فایل را هم RestaurantEditViewModel قرار دهید . خوب باید مواظب اسم گذاریها در این ViewModel باشیم . مثلن چون در View از یک Property به نام Name استفاده میشود ، باید در این ViewModel هم مشابه آن وجود داشته باشد. مطابق زیر این ViewModel را بسازید و مواظب NameSpace ها هم مثل همیشه باشید.

خوب حالا وقت دستکاری Create Action Method می باشد .

دقت کنید ، ورودی متد من همان ViewModel ساخته شده است . یک Instant از کلاس Restaurant گرفته و مقادیر را از وروی ViewModel به Property های این Class Instant متصل میکنیم . بعد از آن از طریق یک متد Add که باید بعدا نوشته شود رکورد را Add کرده و به صفحه Details ولی با محتویات همین رکورد اضافه شده پرتاب خواهیم شد .

یکسری تغییرات ساده هم در Details.CSHTML داشته باشیم ، خالی از لطف نیست .

تصویر بالا لیست تغییرات Details است که فقط سبب بهتر شدن وضعیت نمایش خواهد شد و نکته برنامه نویسی خاصی ندارد. الان وقت ایجاد متد Add در RestaurantData است . پس به قسمت Services رفته و مراحل کار را پی میگیریم.

درون اینترفیس IRestauranData باید یک متد Add به این شکل تعریف و سپس در پیاده سازی اینترفیس بدنه آنرا ایجاد نمود. تغییرات لازمه را در تصویر زیر ببینید .

تصویر بالا فقط تعریف متد را نشان میدهد .

در تصویر بعدی شکل پیاده سازی متد Add را نیز خواهید دید.

در تصویر بالا مشاهده میکنید که مقدار ماکزیمم ID باید بدست آمده و یکی به آن اضافه شود و سپس به کل محتوا به لیست موجود افزوده گردد . به دلیل اینکه دیتابیسی نداریم و باید بتوان State مقادیر را نگه داشت ، سطح دسترسی بسته کلی داده را به Static تغییر میدهم . اینکار غیر استانداردترین کار ممکنه است ، ولی چون با وجود دیتابیس این مشکل وجود نخواهد داشت و ما هم در حال آموزش هستیم ، اینکار را به شکل زیر انجام خواهم داد.

خوب حالا باز پروژه را Save و اجرا کنید و با مراجعه به صفحه Create باز هم به یک Exception خواهیم خورد .

علت بروز این خطا این است که ما 2 متد با نام Create در HomeController داریم و MVC رسمن قاطی کرده است . من و شما میدانیم این متدها با هم فرق دارند و یکی باید Get و دیگری Post باشد ، ولی MVC که نمیداند . برای حل این مشکل به شکل زیر عمل میکنیم .

با دو Attribute ساده مشخص کردیم که کدام یک متد Get است و کدام یک متد Post و حالا دیگر پروژه به درستی کار کرده و با رفتن به آدرس Create بتوانید یک مقدار وارد کرده و پس از Submit بتوانید مقدار آنرا در صفحه Details ببینید .

خوب روال ثبت هم در حال کار است و سورس پروزه را هم در اختیار خواهید داشت . قسمتهای بعدی شامل بهبود بعضی از روندها و اعمال کنترل بر روی مقادیر وارد شده و ... خواهد بود .

دانلود سورس برنامه

علی کلاهدوزان

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

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

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