کاربرد HTML Helper در Strongly Typed View – جلسه ۳۰

HTML Helper in ASPNET Core Part 3 - Session30

در سی امین جلسه از آموزش ASP.NET Core، به بررسی کاربرد HTML Helper در Strongly Typed View خواهیم پرداخت. در جلسه 28 و جلسه 29ام این دوره آموزشی، یک فرم با استفاده از هلپرهای TextBox, TextArea, Label و DropDownList ایجاد نمودیم که در آنها از مدل ارسال شده به فرم استفاده نکردیم. در این جلسه قصد داریم همان فرم را در یک نمای Strongly Typed View ایجاد نموده و از هلپرهای TextBoxFor, TextAreaFor, LabelFor و DropDownListFor استفاده نماییم.

ایجاد نمای Strongly Typed View با استفاده از HTML Helper

برای تبدیل فرم ایجاد شده در جلسه 29ام، ابتدا ViewModel خود را جهت ارسال لیست آیتم‌‌های Drop Down List تغییر میدهیم تا قابلیت ارسال لیست را داشته باشد.

    public class CreateCostViewModel
    {
        public decimal Amount { get; set; }
        public DateTime Date { get; set; }
        public string Comment { get; set; }
        public string Category { get; set; }
        public List<SelectListItem> Categories { get; set; }   
    }

همانگونه که در قطعه کد فوق مشاهده میکنید، فیلد و یا خصوصیت Categories جهت ارسال لیست به مدل CraeteCostViewModel اضافه گردید.

سپس در کنترلر Cost یک اکشن متد جدید جهت ارسال داده به فرم جدید ایجاد خواهیم کرد.

        public IActionResult CreateStronglyTypedView()
        {
        }

سپس درون Action Method ایجاد شده یک لیست آیتم، مانند جلسه گذشته ایجاد میکنیم.

            List<SelectListItem> CatList = new List<SelectListItem>
               {
                   new SelectListItem{Text = "Grocery", Value = "Grocery", Selected=true },
                   new SelectListItem{Text = "Bill", Value = "Bill" },
                   new SelectListItem{Text = "Rent", Value = "Rent" },
                   new SelectListItem{Text = "Home Appliance", Value = "Home Appliance" },
               };

پس از آن، در ادامه یک Object از ViewModel خود ایجاد کرده و داده های مورد نظر و همچنین لیست مربوط به DropDownList را درون آن ذخیره میکنیم.

            CreateCostViewModel Model = new CreateCostViewModel
            {
                Amount=100,
                Comment="No Comment",
                Date = DateTime.Now,
                Categories = CatList
            };

و در ادامه Object ایجاد شده را به نما ارسال میکنیم.

        public IActionResult CreateStronglyTypedView()
        {
            List<SelectListItem> CatList = new List<SelectListItem>
               {
                   new SelectListItem{Text = "Grocery", Value = "Grocery", Selected=true },
                   new SelectListItem{Text = "Bill", Value = "Bill" },
                   new SelectListItem{Text = "Rent", Value = "Rent" },
                   new SelectListItem{Text = "Home Appliance", Value = "Home Appliance" },
               };
            CreateCostViewModel Model = new CreateCostViewModel
            {
                Amount=100,
                Comment="No Comment",
                Date = DateTime.Now,
                Categories = CatList
            };

            return View(Model);
        }

در این مرحله باید یک نما برای Action Method ایجاد کنیم. نمای مربوطه را ایجاد کرده و Model Directive آنرا به ViewModel خود متصل میکنیم.

@model CreateCostViewModel

سپس فرم را با استفاده از LabelFor, TextBoxFor, TextAreaFor و DropDownListFor طراحی میکنیم.

        <div>
            @Html.LabelFor(m=> m.Amount)
            @Html.TextBoxFor(m=> m.Amount)
        </div>
        <div>
            @Html.LabelFor(m=>m.Date)
            @Html.TextBoxFor(m=>m.Date)
        </div>
        <div>
            @Html.LabelFor(m => m.Category)
            @Html.DropDownListFor(m=>m.Categories,Model.Categories,"Select a Category")
        </div>
        <div>
            @Html.LabelFor(m=> m.Comment)
            @Html.TextAreaFor(m=>m.Comment)
        </div>

همانگونه که در قطعه کد فوق مشاهده کردید، برای Name, ID و همچنین داده‌های پیش فرض، نیازی به نوشتن کد استاتیک وجود ندارد. تمامی این موارد با اتصال هر هلپر به مدل توسط Lambda Expression (به عنوان مثال m=>m.comment) به صورت خودکار تنظیم میگردد.

همچنین امکان استفاده از Html Attribute در این هلپرها وجود دارد که در ادامه نحوه استفاده از آنرا مشاهده خواهید کرد.

@model CreateCostViewModel

@{ 
    ViewBag.Title = "Create New Cost Record";
}

<div class="row">
    <div class="alert alert-primary col-lg-6 offset-lg-3 mt-5" role="alert">
        <h2>Create Cost Record</h2>
    </div>
    <form class="col-lg-6 offset-lg-3 border border-1">

        <div>
            @Html.LabelFor(m=> m.Amount, new { @class = "form-lable" })
            @Html.TextBoxFor(m=> m.Amount, new { @class = "form-control" })
        </div>
        <div>
            @Html.LabelFor(m=>m.Date, new { @class = "form-lable" })
            @Html.TextBoxFor(m=>m.Date, new { @class = "form-control"})
        </div>
        <div>
            @Html.LabelFor(m => m.Category, new { @class = "form-lable" })
            @Html.DropDownListFor(m=>m.Categories,Model.Categories,"Select a Category", new { @class = "form-control" })
        </div>
        <div>
            @Html.LabelFor(m=> m.Comment, new { @class = "form-lable" })
            @Html.TextAreaFor(m=>m.Comment, new { @class = "form-control" })
        </div>
        <div class="mt-2">
            <button type="submit" class="btn btn-primary btn-block mb-1">Create</button>
        </div>
    </form>
</div>

در صورت نیاز به جزئیات بیشتر، میتوانید ویدئو آموزشی این جلسه را تماشا نمایید. همچنین برای آگاهی از جلسات بعدی این دوره آموزشی، ما را در اینستاگرام، تلگرام، یوتیوب و آپارات دنبال کنید. همچنین لیست کامل جلسات در این قسمت در دسترس شما میباشد.

تماشای ویدیو در یوتیوب ما

دانلود اسلایدهای آموزشی این جلسه از اینجا

برچسب ها

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
0
افکار شما را دوست داریم، لطفا نظر دهید.x