با سلام خدمت تمامی همراهان سایت میزفا ،
با یکی دیگر از جلسات آموزش طراحی سایت با ASP.NET Core و در ادامه ی پروژهی خوش آمدگویی در خدمت شما دوستان عزیز هستم .
استفاده از مقید سازی مدل
در جلسه گذشته دو متد به نام Create در کنترلر WellCome ایجاد کردیم که یکی دارای خصوصیت Get بود و برای نمایش نمای Create و فم ورود اطلاعات به کار رفته بود و دیگری که از نوع Post بود شیئی از یک کلاس GuestResponse را به عنوان پارامتر ورودی میپذیرد حال این سوال پیش میآید که اطلاعات فرم چگونه در قالب یک شی از نوع کلاس GuestResponse به متد اکشن ارسال میشوند؟
پاسخ در مفهومی به نام مقیدسازی مدل به عنوان یکی از ویژگی های مهم MVC خلاصه شده که موجب میشود دادههای دریافت شده به صورت زوج های کلید/مقدار درآمده و از آنها برای ایجاد خصوصیات مدل ( در اینجا خصوصیات تعریف شده در کلاس GuestResponse) استفاده شود.
مقید سازی مدل جنبه مهمی از MVC است که موجب می شود به جای کار سخت پردازش داده های رسیده از طرف مرورگر تنها با اشیا ایجاد شده از کلاس های #C سرکار داشته باشید خصوصیت های شی GuestResponse که برای پارامتر متد فرستاده میشود به طور خودکار با دادههایی که کاربر در فیلدهای فرم وارد کرده است پر میشوند .
یکی از اهداف برنامه نمایش لیستی از مهمان ها است بنابراین باید پاسخ هایی که دریافت می شوند در جایی ذخیره گردند در اینجا از یک کلکسیون ( در حقیقت ذخیره در حافظه ) برای این کار استفاده خواهیم کرد.توجه دارید که در یک پروژه واقعی بهتر است این اطلاعات را در جدولی در پایگاه داده ذخیره کرد.
اکنون با کلیک راست بر روی پوشه Models و انتخاب گزینه Class از فهرست Add کلاسی به نام Repository.cs به پروژه اضافه کنید .
استاتیک بودن کلاس Repository و اعضای آن ،کار دسترسی به آن ها را از محل های مختلف پروژه آسان میکند.
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace WellComeProject.Models { public static class Repository { private static List<GuestResponse> responses = new List<GuestResponse>(); // GuestResponse تعریف یک لیست از نوع public static IEnumerable<GuestResponse> Responses { get { return responses; } } public static void AddResponse(GuestResponse response) { responses.Add(response); } } }
در کد بالا در کلاس Repository.cs یک لیست از نوع GuestResponse به نام responses تعریف شده است و سپس یک متد به نام AddResponse تعریف شده که یک شی از نوع کلاس GuestResponse را به عنوان ورودی میگیرد و در لیست responses ذخیره میکند.
در جلسه آینده با نحوه استفاده از کلاس Repository بیشتر آشنا خواهیم شد . امیدوارم که از مطالب آموزشی این جلسه لذت کافی را برده باشید در صورتی که سوالی داشتید حتما در قسمت نظرات این پست مطرح کنید.
2 پاسخ
سلام
توضیح ندادین این خط کد چیکار میکنه …
public static IEnumerable Responses
{
get
{
return responses;
}
}
با سلام…. در کد زیر
به نام responses تعریف کردیم که سطح دسترسی این فیلد private است و ما باید از property ها برای مقداردهی و دسترسی به مقدار این فیلد استفاده کنیم بنابراین در کد زیر
private static List<GuestResponse> responses = new List<GuestResponse>();
ما یک فیلد از نوع List
ما یک خصوصیت یا property تعریف کردیم تا از طریق این خصوصیت در خارج از کلاس بتونیم به مقدار فیلد دسترسی داشته باشیم … این کد رو توضیح ندادم چون افرادی که با زبان برنامه نویسی سی شارپ و شی گرایی اشنایی دارن به راحتی می تونن متوجه عملکرد این کدها بشن … لازمه که حتما برای شروع اموزش Core با زبان برنامه نویسی سی شارپ آشنایی داشته باشید . موفق باشید.