Custom HTML Helper in ASP.NET MVC3 ใน ASP.NET MVC3 นั้นเราจะเขียนส่วนแสดงผลไว้ใน View ซึ่งเราเขียนเหมือนกับเราเขียนหน้าเว็บตามปกติ โดยเราจะใช้ HTML ในการแสดงผล โดยใน ASP.NET MVC3 ได้เตรียม HTML Helper มาให้กับเรา เพื่ออำนวยความสะดวกในการสร้างฟอร์ม รูปภาพ ลิ้งค์ มาให้กับเรา ที่เราใช้กับส่วนมากจะมีดังนี้
using System.Web.Mvc;
public class MyLabel
{
public static MvcHtmlString Label( string target, string text )
{
string label = String.Format( "<label for='{0}'>{1}</label>", target, text );
return new MvcHtmlString( label );
}
}
เราจะรับพารามิเตอร์เข้ามาสองตัวเพื่อนำมาประกอบเป็น Markup HTML และสร้างขึ้นมาเป็น String และคืนค่าออกมา
สำหรับการนำไปใช้ ในไฟล์ที่เขียนคำสั่งสร้าง View เราจะต้อง using namespace ที่เก็บคลาส MyLabel ไว้เข้ามาด้วย และเรียกใช้ดังตัวอย่างด้านล่างนี้
และสุดท้ายก็จะได้ผลลัพธ์ออกมาเป็น Html ดังข้างล่างนี้
Code (C#)
<label for='Email'>Your Email : </label>
Create HTML Helper with Extension Method
จากตัวอย่างที่ผ่านมาจะเป็นการเรียกผ่าน Class ที่เราได้สร้างขึ้นมาเอง แต่ถ้าเราต้องการให้เรียกผ่าน @Html เลยให้มันเหมือนกับเป็นเมธอดที่เพิ่มมาใหม่เลย เราก็ต้องสร้าง Extension Method (ดูเรื่อง Extension Method จากบทเรียนที่ผ่านมา) โดยพารามิเตอร์แรก เราจะใช้คีย์เวิร์ด this กำกับและกำหนด Type เป็น HtmlHelper และกำหนดให้คลาสที่บรรจุเมธอดนั้นเป็น Static ด้วย
Code (C#)
public static class LabelExtensions
{
public static MvcHtmlString MyLabel( this HtmlHelper htmlHelper,
string target, string text )
{
string label = String.Format( "<label for='{0}'>{1}</label>", target, text );
return new MvcHtmlString( label );
}
}