Html Helper سفارشی در MVC

سه شنبه 11 اسفند 1394

در این مقاله می خواهیم در مورد html helper سفارشی صحبت نماییم، و در مورد این موضوع یک نمونه قرار دهیم، html helper ها متدهایی هستند که در syntax های razor به کار می رود و مورد استفاده خواهد بود.

Html Helper سفارشی در MVC

html helperها متدهایی هستند که یک رشته ی html برمی گرداند، سپس این رشته ها در یک view رندر می شود، mvc تعداد زیادی متد html helper را فراهم می کند، که با ایجاد یک بار htmlhelper می توانید چندین متد داخل آن بسازید.

دو راه در mvc وجود دارد برای درست کردن html helper سفارشی:

1-افزودن extension method برای کلاس htmlhelper

2-استفاده از متد static

ابتدا در مورد افزودن extension method برای کلاس htmlhelper:

این متغییر های helper در داخل کلاس قابل دسترس هستند و شما می توانید از آن ها داخل کلاس خودتان استفاده کنید.

یک پروژه از نوع mvc ایجاد نمایید و داخل آن یک کلاس به نام customehelper ایجاد نمایید، یک extension method در این کلاس استاتیک ایجاد نمایید.

به صورت زیر:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Mvc;  
  
namespace CustomeHelper.CustomHelper  
{  
    public static class CustomHelpers  
    {  
        public static IHtmlString File(this HtmlHelper helper, string id)  
      {  
            TagBuilder tb = new TagBuilder("input");  
            tb.Attributes.Add("type", "file");  
            tb.Attributes.Add("id", id);  
            return new MvcHtmlString(tb.ToString());  
        }  
    }  
} 

در کد بالا ما یک متد استاتیک برای کلاس htmlhelper ایجاد می نماییم، در این متد ما یک tag html با کمک کلاس TagBulider ایجاد می نماییم، در این کد ما فقط از دو صفت استفاده می کنیم ولی شما می توانید با توجه به نیاز خود هر چند صفتی که می خواهید اضافه نمایید.

در حال حاضر از متد htmlhelper استفاده می شود، که با استفاده کردن از این کلاس ما از namespace زیر استفاده می نماییم.

    @using CustomeHelper.CustomHelper  
    @ {  
        ViewBag.Title = "Index";  
    }  
      
    < h2 > Index < /h2>  

اگر شما می خواهید در چندین view از این متد استفاده نمایید کافی است که این فضای نام را در web.config خود برای یک بار قرار دهید و در بقیه جاهایی که می خواهید از آن استفاده کنید.

با افزودن متد و پاس دادن پارامتر id به صورت زیر خواهد بود:

2-استفاده از متد static:

در این روش ما می توانیم هر extension متدی را به کلاس htmlhelper اضافه کنیم، ما می توانیم یک کلاس جدید به نام customhelper ایجاد نماییم.

کد به صورت زیر خواهد بود:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Mvc;  
  
namespace CustomeHelper.CustomHelper  
{  
    public class CustomHelper  
    {  
        public static IHtmlString File(string id)  
      {  
            TagBuilder tb = new TagBuilder("input");  
            tb.Attributes.Add("type", "file");  
            tb.Attributes.Add("id", id);  
            return new MvcHtmlString(tb.ToString());  
        }  
    }  
} 

وقتی که شما یک کلاس ایجاد می نمایید می توانید از htmlhelper استفاده کنید، زمانی هم که شما یک view داشته باشید برای استفاده از کلاس htmlhelper نام کلاس را با استفاده از یک @ استفاده می کنید به صورت زیر:

با افزودن متد و ارسال پارامتر id به صورت زیر خواهد بود:

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید