ساخت Image ActionLink به Html Helper در ASP.NET MVC

در این مقاله نحوه افزودن Image ActionLink به html Helper را خواهید آموخت .برای استفاده از لینک از متدهای الحاقی (Extension) که فرم ورک MVC فراهم نموده است استفاده می کنیم .

ساخت Image ActionLink به Html Helper در ASP.NET MVC

برای استفاده از لینک از متدهای الحاقی (Extension Method) که فرم ورک  MVC فراهم نموده است استفاده می کنیم .برای نمونه برای ساخت یک لینک ساده از Html.ActionLink() استفاده میکنیم که یک لینک ساده برای ما ایجاد می کند.به کد زیر توجه کنید

@Html.ActionLink("Link Display Text","Index","Home")

بعد از اجرا کد بالا به کدهایی که مرورگر قابلیت نمایش آن را دارد تبدیل می شود ، یعنی همان تگ های HTML.در کد زیر می بیند که Html.ActionLink() تبدیل به کد زیر در مرورگر کاربر خواهد شد

<a href="/Home/Index">Link Display Text</a>

ولی برای لینک از نوع تصویر Html Helper  هیچ متد آماده ای برای ما ندارد .بهتر است که یک متد الحاقی برای helper بنویسیم و در سرتاسر پروژه به آن دسترسی داشته باشیم .

این زیبایی MVC است که هر لحظه می توانیم کارایی های آن را افزایش دهیم .برای ساخت این متد الحاقی اولین کار ساختن یک کلاس استاتیک است .در داخل این کلاس هم متدی که تعریف می کنیم باید از نوع استاتیک باشد .در کد زیر نحوه ساخت متد الحاقی یا   Extension Methodرا مشاهده می کنید.

namespace MyApplication.Helpers
{
  public static class CustomHtmlHelepers
  {
    public static IHtmlString ImageActionLink(this HtmlHelper htmlHelper, 
    string linkText, string action, string controller, 
    object routeValues, object htmlAttributes,string imageSrc)
    {
        var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
        var img = new TagBuilder("img");
        img.Attributes.Add("src", VirtualPathUtility.ToAbsolute(imageSrc));
        var anchor = new TagBuilder("a") 
        { InnerHtml = img.ToString(TagRenderMode.SelfClosing) };
        anchor.Attributes["href"] = urlHelper.Action(action, controller, routeValues);
        anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));

        return MvcHtmlString.Create(anchor.ToString());
    }
  }
}

اولین پارامتر تابع با کلمه کلیدی this مشخص شده است .اگر در داخل همین Name Space قرار است از این متد استفاده کنید نیاز به استفاده از هیچ Using ایی ندارید ولی در خارج از Name Space باید به شکل زیر از متد مربوطه استفاده کنید.

@using MyApplication.Helpers;

@Html.ImageActionLink("Link Display Text",
"Index","Home",null,null,"~/images/untitled.png")

بعد از اجرای کد بالا تگ های Html به صورت زیر ساخته و به کاربر نشان داده خواهند شد.

<a href="/Home/Index">
<img src="/images/untitled.png">
</a>
فایل های ضمیمه
دانلود نسخه ی PDF این مطلب