<= Tilbake

Custom Html helper

Noen ganger kan det være kjekt å lage sine egne Html helpers. For å gjøre det bygger vi bare en extension på den innebygde Html klassen i vår egen klasse.

Vi lager en ny mappe, kaller den Extensions og lager en ny static klasse som heter HtmlHelper:

public static class HtmlHelpers
    {
        public static MvcHtmlString UnorderedList(this HtmlHelper htmlHelper, IEnumerable list)
        {
            var ul = new TagBuilder("ul");
            var listString = new StringBuilder();
         
            foreach (var item in list)
            {
                var li = new TagBuilder("li");
                li.SetInnerText(item);
                listString.Append(li);
            }
            ul.InnerHtml = listString.ToString();

            return MvcHtmlString.Create(ul.ToString());
        } 
    }
Vi bruker klassen TagBuilder til å lage en <ul>-tag, og bygger <li>-tags utfra listen som blir sendt inn.

Vi kan teste vår nye liste i Index.cshtml:

<h2>UL</h2>
@Html.UnorderedList(new[] {"Frank", "Per", "Ole"})
<hr/>
Og vips, det funker!

For å gjøre helperen vår lettere å bruke, benytter vi oss av et supertriks i C# og skriver den om til å ta inn lista på formen params string[] list:

public static MvcHtmlString UnorderedList(this HtmlHelper htmlHelper, params string[] list){
	.....
}
Det betyr at vi fremdeles kan sende inn en liste, men vi kan også sende inn kommaseparerte strings på denne måten:
@Html.UnorderedList("Frank", "Per", "Ole", "Jarle")


<= Tilbake