در این بخش به بررسی چگونگی انتقال Data بین Action و View خواهیم پرداخت . در قسمتهای قبلی یک Action Method ایجاد کردیم که یک Movie Name را در View نمایش میداد. برای یاد آوری به شکل زیر دقت کنید.
بسمه تعالی
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش دهم
در این بخش به بررسی چگونگی انتقال Data بین Action و View خواهیم پرداخت . در قسمتهای قبلی یک Action Method ایجاد کردیم که یک Movie Name را در View نمایش میداد. برای یاد آوری به شکل زیر دقت کنید.
در این Action در عمل Data توسط یک پارامتر مختص به خروجی View به سطح UI پاس داده میشود.
روشهای دیگری هم برای ارسال دیتا از Action به View وجود دارد که بد نیست در این مبحث آنها را هم بررسی کنیم.
روش اول استفاده از ViewDate میباشد. هر Controller یک Property به نام ViewData دارد. که به آن ViewData Dictionary هم گفته میشود.خوب تا همینجا ببینیم چگونه میتوان دیتا را درون ViewData در سطح Action ذخیره نمود.
خوب در تصویر بالا هنوز یک ایراد داریم و آن هم این است که دیگر Movie به عنوان آرگومان View باید حذف شود. پس وضعیت باید به شکل زیر در بیاید.
خوب حالا باید وارد View مختص این Action شده و تغییرات لازمه را ایجاد نماییم. خوب در این View ما از Model Property استفاده کرده بودیم ، ولی الان باید از ViewData استفاده کنیم. وضعیت جدید به شکل زیر خواهد بود.
صبر کنید ، هنوز کار تمام نیست . من به Name Property از مجموعه Movie نیاز دارم و ظاهرن برای سطح View این Property شناخته شده نیست . حال پای Casting به میان می آید . برای حل این مشکل به یک روش بسیار بد مشابه زیر وجود دارد.
روش بالا افتضاح است . یک دنیا پرانتز و در کل هم یک Casting به بدترین و زشت ترین شکل ممکنه چه در زمینه شکل و ظاهر کد و چه در مفهوم. مثلن فرض کنید نام متغیر درون Action را عوض کنیم، هیچ گونه هوشمندی وجود ندارد و باید خودمان حواسمان باشد تا همه نامها را تغییر دهیم.
باید دید روش دیگر چیست ؟. روش دیگر ، ViewBag است . به این روش دقت کنید.
خوب آیا این روش دیگر حل کننده مشکل و ایده آل است ؟ . خیر این هم باز همه مشکلات ViewData را دارد. روش بهینه همان کاری بود که با پاس دادن یک بسته Data به عنوان ورودی View در زمان Return انجام میشد .
پس به همان روش اولی برگشتیم.
این بخش در عمل یک جور هشدار بود تا بدانید روش بهینه چیست و ضمنن حالا ذهن شما اندکی آماده تر شده تا بتوانید در بخش بخش بعدی به مفهوم مهمی به نام ViewModel توجه کنید .
دانلود سورس پروژه