Helper داخلی سفارشی در MVC

در این مقاله قصد داریم به پیاده سازی Helper داخلی سفارشی (Custom Inline Helper)در تکنولوژی ASp.MVC را بپردازیم.

در این مقاله درباره متدهای Helper صحبت خواهیم کرد و همچنین به توضیحی درباره ایجاد و استفاده از این متد ها میپردازیم.

Helper Methods:

متد های Helper مجموعه ای است که  به زبان کد و  به زبان نشانه گذاری (Html) مورد استفاده قرار میگیرند.  در واقع دو نوع متد helper وجود دارد که یکی به نام متدinline helper و دیگری متد external helper است که در این مقاله  به پیاده سازی متد inline helper میپردازیم

حال برای شروع ویژوال استادیو را باز کنید و یک پروژه از نوع MVC ایجاد کنید.

یک کنترلر از نوع Home ایجاد کنید وکد های زیر را داخل آن بنویسید

using System.Web.Mvc;  
  
namespace CustomInlineHelper.Controllers  
{  
    public class HomeController: Controller  
    {  
        public ActionResult Index()   
        {  
            ViewBag.Fruits = new string[]  
            {  
                "سیب", "هویچ", "پرتقال"  
            };  
            ViewBag.Flowers = new string[]  
            {  
                "گل رز", "گل مریم", "گل محمدی"  
            };  
            return View();  
        }   

 

همان طور که مشاهده میکنید دو تا ViewBag ایجاد کردیم و آن را با آریه ای از string ها پر کردیم

حال یک view  از متد Index میسازیم


    @{  
    ViewBag.Title = "Home Page";  
    }  
    <div class="row">  
        <div class="col-md-6">  
            <h2>میوه </h2>  
            <ul>  
    @foreach (var item in (string[])ViewBag.Fruits)  
    {  
                <li>@item</li>  
    }  
            </ul>  
        </div>  
        <div class="col-md-6">  
            <h2>گل </h2>  
            <ul>  
    @foreach (var item in (string[])ViewBag.Flowers)  
    {  
      
                <li>@item</li>  
    }  
            </ul>  
        </div>  
    </div>  

همان طور که مشاهده میکنید برای خواندن اطلاعات  View Bag ها از دو تا  foreach استفاده کردیم

حال از برنامه اجرا بگیرید

حال شما فرض کنید که یک لیست نامرتب داریم و میخواهیم آن را به لیستی مرتب تبدیل کنیم  حال برای استفاده از متد helper کافی است تغیراتی در View خود انجام دهیم


    @helper ListItems(string [] items)  
    {  
    <ul>  
    @foreach (var item in items)  
    {  
        <li>@item</li>  
    }  
    </ul>  
    }  

در کد قبل با استفاده از  دستور ReZor  از یک helper به نام ListItem  استفاده کردیم همان طور که مشاهده میکنید  با استفاده از "herper " تنها از  یک froeach برای فراخوانی و استفاده از ViewBag ها استفاده کرده ایم.

حال در این مرحله دوباره به باز نویسی view، Index میپردازیم

@helper ListItems(string[] items)
{
    <ul>
        @foreach (var item in items)
        {
            <li>@item</li>
        }
    </ul>
}
<div class="row">
    <div class="col-md-6">
        <h2>میوه ها </h2>
        @ListItems(ViewBag.Fruits)
    </div>
    <div class="col-md-6">
        <h2>گل ها </h2>
        @ListItems(ViewBag.Flowers)
    </div>
</div>  

حال گاهی اوقات لازم است که از یک دستور در View های مختلف استفاده کنیم ودر حقیقت میخواهیم  یک برنامه با بهینه سازی هر چه بیشتر بنویسیم برای این کار کافی است یک فولدر به نام App_Code ایجاد کنیم ( این نکته را یادآوری کنیم که برای دسترسی به همه view ها باید حتما نام فولدر App_Code)باشد و یک view داخل آن ایجاد میکنیم و کد های زیر را داخل آن مینویسیم.

@helper ListItems(string[] items)
{
    <ul>
        @foreach (var item in items)
        {
            <li>@item</li>
        }
    </ul>
}

حال دوباره View Index را باز سازی میکنیم.


    @{  
    ViewBag.Title = "Home Page";  
    }  
    <div class="row">  
        <div class="col-md-6">  
            <h2>Fruits</h2>  
    @GlobalHelper.ListItems(ViewBag.Fruits)  
      
        </div>  
        <div class="col-md-6">  
            <h2>Flowers</h2>  
    @GlobalHelper.ListItems(ViewBag.Flowers)  
        </div>  
    </div> 
فایل های ضمیمه