• ASP.NET Core 1 – قسمت 22
ASP.NET Core 1 – قسمت 22
1395/02/04 - 17:29:01 // MVC 5 & 6 // 0 نظر // 470 بازدید

در قسمتهای قبلی عمل Insert رکورد را انجام دادیم ، ولی اگر مثلن یک فرم سنگین داشتیم و درون آن باید سن افراد فقط بین 20 تا 60 دریافت میشد ، چگونه می بایست جلوی وارد شدن مقدار 88 را بگیریم ؟. یک راه گذاشتن صدها یا شاید هزاران IF در Controller ها و بررسی ورودیهاست .

بسمه تعالی

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

در قسمتهای قبلی عمل Insert رکورد را انجام دادیم ، ولی اگر مثلن یک فرم سنگین داشتیم و درون آن باید سن افراد فقط بین 20 تا 60 دریافت میشد ، چگونه می بایست جلوی وارد شدن مقدار 88 را بگیریم ؟. یک راه گذاشتن صدها یا شاید هزاران IF در Controller ها و بررسی ورودیهاست . این روش متعلق به دهه 40 بوده و عاقلانه نظر نمیرسد . در این بخش به بررسی یکی از روشهای عاقلانه در ASP.NET MVC خواهیم پرداخت . روشهای دیگری هم هست که بعدا به آنها هم خواهیم رسید ، چون در این روش آخر داده ها به سمت سرور خواهد رفت و این یعنی مشغول کردن سرور که زیاد جالب نیست . روش دیگری هست که اصلن اجازه Submit شدن فرم را میشود نداد و کاربر را مجبور به وارد کردن دیتای صحیح نمود . به این روش بعدا خواهیم پرداخت .

مثلن فرض کنید نام رستوران از یک حدی نباید بیشتر باشد یا از یک تعداد کاراکتری نباید کوتاه تر باشد. ساده ترین راه کنترل و Validate مقادیر وارد شده ، Data Annotation می باشد .این کنترلها به دلیل اعمال شدن در سطح Model به Model Data Annotation معروف هستند . انواع این تنظیمات در لیست زیر قرار دارد.

لیست همه چیز را مشخص کرده است . اولی برای Max و Min در طول رشته هاست . Range برای تایین مقدار Min و Max برای مقادیر عددی است . Regular Expression برای کنترل شکل و Format مقدار ورودی است . Compare برای بررسی تساوی یا .... بر روی دو مقدار بوده و DataType تایین کننده نوع مقدار در Model میباشد. Required هم نقش کنترل وجود داشتن یا نداشتن یک مقدار را بر عهده دارد .

خوب حالا سعی میکنیم از چند مورد از این Annotation ها در پروزه خودمان استفاده کنیم.

ابتدا برای مشاهده شکل پیاده سازی این کنترلها یکبار برنامه را اجرا به فرم Create بروید . اگر در Chrome یک Inspect Elements بزنیم ، یکسری موارد مشهود است . یک Label که از طریق یک Helper به نام LabelFor تولید میشود . همانطور که میدانید، Model من در این پروژه در روند Create کلاس Restaurant میباشد و برای ایجاد یکسری Validation باید بر بروی همین Entity کار کنیم. کل کارکرد Data Annotation ایجاد یکسری مشخصات جدید برای اجزای Model خواهد بود . مثلن شاید بخواهیم به جای عبارت Name در View از عبارت دیگری استفاده کرده تا در LabelFor عبارت دیگری نمایش داده شود . اینجاست که میتوان از Data Annotation استفاده کرد . در ابتدا باید اشاره کنیم که using System.ComponentModel.DataAnnotations; را فراموش نکنید . این NameSpace کلیه Libraryهای این تکنیک را درون خود دارد و باید در کلاسهای Model استفاده شود.

اگر الان بخواهم به جای نمایش عبارت Name از طریق Label مثلن عبارت دیگری نمایش داده شود ، باید مطابق زیر عمل نمود .

نتیجه در فرم Create مشابه زیر خواهد شد .

حالا فرض کنید میخواهیم وارد کردن نام رستوران را هم اجباری کنیم . باید یک Property جدید اضافه کنیم.

می توان چند عبارت Data Annotation را در یک خط کد نوشت . مشابه آنرا من در تصویر زیر انجام خواهم داد.

برای اینکه همه این تغییرات به درستی در سطح View اعمال شود، بهتر است Helper درون View را تغییر داده و از یک نوع Generic تر استفاده کنیم. Helper دیگر EditFor نام دارد که مشابه زیر مورد استفاده قرار میگیرد .

حالا اگر بعد از اجرای پروژه فرم Create را Inspect کنید ، خواهید دید که یکسری Property برای Input مختص به Name مثل MaxLength و ... اضافه شده است .

نکته مهم بعدی این است که به دلیل استفاده از ViewModel در HomeController و متد Create ، باید درون آنها هم Data Annotation را اعمال کرد تا بعدا بتوان وضعیت Server Side Validation را کنترل نمود .

خوب حالا یک IF ساده برای کنترل وضعیت Model State در Create Action Method لازم داریم .

با این IF میتوان وضعیت Model را بررسی و در صورت Valid بودن عملیات ثبت را انجام و در غیر این صورت خود View را باز خواهد گرداند .

حالا باید در View هم یکسری تغییرات اعمال نمود .با استفاده از یک Helperبه نام @Html.ValidationMessageFor می توان پیام خطای لازمه را هم نمایش داد .

الان نتیجه خالی بودن TextBox را خواهید دید .

حالا دیگر با روالهای Validation آشنا شدید . تقریبا وضعیت شما برای ارتباط با دیتا بیس آماده است . از قسمت بعدی وارد مباحث Entity FrameWork شده و ارتباط با دیتابیس را آغاز خواهیم نمود .

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

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

موفق باشید

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

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

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