• ASP.NET Core 1 – قسمت بیست و یک
ASP.NET Core 1 – قسمت بیست و یک
1395/02/04 - 14:39:26 // MVC 5 & 6 // 0 نظر // 590 بازدید

در این قسمت به بررسی شکل و تفاوتهای Post ، Redirect و Get در ASP.NET MVC خواهیم پرداخت . در اصل در این قسمت به بررسی Post-Redirect-Get Pattern خواهیم پرداخت .

بسمه تعالی

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

در این قسمت به بررسی شکل و تفاوتهای Post ، Redirect و Get در ASP.NET MVC خواهیم پرداخت . در اصل در این قسمت به بررسی Post-Redirect-Get Pattern خواهیم پرداخت . در حال حاضر کلاینت از طریق یک Post Request مقادیر جدید مانند یک رکورد رستوران جدید را به سرور ارسال میکند وسرور پس از دریافت داده ها به شکل یک صفحه Detials به درخواست پاسخ میدهد ولی مساله اینجاست که جواب دادن به یک Post Request به صورت یک HTML Page سبب یکسری مسائل خواهد شد ، چرا که اگر کاربر صفحه را Refresh کند ، یک Post Request دیگر ایجاد خواهد گردید. روش صحیح این است که در صورت درست عمل کردن یه Post Request یک روند Redirect انجام شود و این Redirect عملا به سیستم اعلام خواهد کرد که یک Get Request ایجاد کرده و داده ها از مکان لازم بخواند و کارکرد خود ادامه دهد . در ادامه بحث به بررسی چگونگی پیاده سازی این Pattern خواهیم پرداخت .

اگر پروژه اجرا را و یک رکورد جدید ایجاد کرده و بعد از فرستاده شده به صفحه Details صفحه را رفرش کنید ، حتی Browserهم متوجه خطرناک بودن این روند شده و به شما پیام میدهد .

هر گونه Refresh شده این صفحه سبب Duplicate شده همه چیز خواهد شد . خوب حالا فرض کنید از کارت اعتباری یک بیچاره ای 2 بار پول بردارید یا یک دانشجو یک تراکنش را در سیستم انتخاب واحد بیش از 1 بار انجام دهد و گرفتار شود. البته میتوان با ایجاد دهها یا شاید صدها روال کنترل کننده جلو این اعمال را گرفت ، ولی وقتی حتی Browser در حال اعلام هشدار است ، حتمن راهی برای جلوگیری از این روند توسط سردمداران و طراحان تکنولوژیها وجود دارد.

حل این مشکل سخت نیست . به HomeController می رویم و اصلاحات زیر را انجام میدهیم. به جای درجا پاس دادن صفحه به Details View ، می توان مشابه زیر عمل کرد .

همانطور که مشاهده میکنید ، خروجی متد عوض شد و صفحه هم با ایجاد Route Parameter به Details منتقل خواهد شد . حالا اگر برنامه اجرا کنید و یک رکورد اضافه کنید ، حتی با Refresh کردن صفحه هم فقط اطلاعات را نمایش داده و Duplicate انجام نخواهد شد.

حال اگر کاربر دیتای غیر اصولی وارد کرد ، چه باید کرد ؟. باید دیتا را به هر شکل پذیرفت ؟. این مسئله ای است که در قسمت بعدی به بررسی آن خواهیم پرداخت .

دانلود سورس پروژه

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

موفق باشید

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

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

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