آموزش html Healper
بسم الله الرحمن الرحیم
آموزش asp.net mvc
در بیشتر مواقع شما نیاز دارید تا یک html Healper را ایجاد نمایید و از ان برای جلوگیری از تکرار دستورات و یا ایجاد یک خروجی مناسب استفاده کنید. برای این فرایند کافی است ابتدا یک کنترلر به صورت زیر با نوع empty ایجاد کنید:
namespace MvcApplication2.Controllers
{
public class SampleController : Controller
{
// GET: /Sample/
public ActionResult Index()
{
List List = new List();
List.Add("Esmaeil");
List.Add("Mojtaba");
List.Add("Reza");
List.Add("Hasan");
List.Add("Ali");
ViewBag.List = List;
return View();
}
}
}
حال view ای ایجاد و کد زیر را به آن اضافه کنید:
بسم الله الرحمن الرحیم
آموزش asp.net mvc
در بیشتر مواقع شما نیاز دارید تا یک html Healper را ایجاد نمایید و از ان برای جلوگیری از تکرار دستورات و یا ایجاد یک خروجی مناسب استفاده کنید. برای این فرایند کافی است ابتدا یک کنترلر به صورت زیر با نوع empty ایجاد کنید:
namespace MvcApplication2.Controllers
{
public class SampleController : Controller
{
// GET: /Sample/
public ActionResult Index()
{
List List = new List();
List.Add("Esmaeil");
List.Add("Mojtaba");
List.Add("Reza");
List.Add("Hasan");
List.Add("Ali");
ViewBag.List = List;
return View();
}
}
}
حال view ای ایجاد و کد زیر را به آن اضافه کنید:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<b> Inline HTML Helper </b>
@helper PrintList(List<string> List)
{
<ul>
@foreach (string item in List)
{
<li>@item</li>
}
</ul>
}
@PrintList(ViewBag.List)
به اینگونه توابع نوشته شده در view به اصطلاح inline HTML Healper گفته می شود. خوب این روش قابلیت استفاده مجدد این inline HTML Helper را ندارد، خوب مثل همه ی برنامه نویسی های شی گرایی که باید از کلاس استفاده شود، بهتر است در اینجا هم نیز از کلاس استفاده کنیم.
برای این فرایند یک کلاس ایجاد نمایید، و سپس یک Extension Method ایجاد نمایید(آموزش ساخت Extension Method و مباحث مربوطه در بخشی جداگانه در مباحث LINQ آموزش داده شده است). برای ساخت تگ های HTML می توان هم به صورت رشته این تگ ها را تولید نمود و هم با استفاده از کلاس TagBuilder (این مبحث نیز در بخشی جداگانه توضیح داده شده است)، ما در این جا از کلاس TagBuilder استفاده می کنیم.
به صورت خلاصه برای یادآوری Extension Method، ما باید یک کلاس و یک تابع static، با نامی دلخواه ایجاد نماییم و مهمترین نکته برای ارتباط یک Extension Method با یک کلاس می بایست اولین پارامتر تابع با کلمه this آغاز شود و نوع پارامتر کلاسی باشد که می خواهیم این کلاس به آن الحاق شود. در نهایت کد ما به صورت زیر خواهد بود:
namespace ExternalHtml.App_Code
{
public static class PrintList
{
public static MvcHtmlString ExternalPrintList(this HtmlHelper html, List<string> List)
{
TagBuilder tagUL = new TagBuilder("ul");
foreach (String item in List)
{
TagBuilder tagLI = new TagBuilder("li");
tagLI.SetInnerText(item);
tagUL.InnerHtml += tagLI.ToString();
}
return new MvcHtmlString(tagUL.ToString());
}
}
}
حال تابع خود را در view صدا می زنیم
<b> External HTML Helper </b>
@HtmlHelper.ExternalPrintList(ViewBag.List);