ASP.NET MVC : Working With Helper Methods
In this article, we will implement the HTML custom helper methods. This facility allows developers to define the UI as needed by their business requirements.
Task 1: Open VS2010 and create a new MVC 3 application, name it "RAZOR_MVC3_Html_Helper_Methods". In this project add a new Folder, name it "HelperMethodsRepository".
Task 2: In the Model folder add a new class file, name it "DataClasses.cs" and add a classes as in the following:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace RAZOR_MVC3_Html_Helper_Methods.Models
- {
- public class Person
- {
- public int PersonId { get; set; } public string PersonName { get; set; }
- }
- public class PersonList : List<Person>
- {
- public PersonList()
- {
- Add(new Person() { PersonId = 101, PersonName = "Mahesh Joshi"});
- Add(new Person() { PersonId = 102, PersonName = "Tejas Joshi" });
- Add(new Person() { PersonId = 103, PersonName = "Leena Joshi" });
- Add(new Person() { PersonId = 104, PersonName = "Rahul Patil" });
- Add(new Person() { PersonId = 105, PersonName = "Anagha Patil"});
- }
- }
- }
Task 3: In the folder "HelperMethodsRepository" add a new class file, name it "MyHtmlHelperExtensionClass.cs". This file will contain a HTML helper extension class. Implement it as below:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using RAZOR_MVC3_Html_Helper_Methods.Models;
- using System.Collections;
- using System.Reflection;
- namespace RAZOR_MVC3_Html_Helper_Methods.HelperMethodsRepository
- {
- public static class MyHtmlHelperExtensionClass
- {
- private const string Nbsp = " ";
- private const string SelectedAttribute = "
- selected='selected'";
-
-
-
-
-
-
- public static MvcHtmlString ListData(this HtmlHelper helper,PersonList per)
- {
- MvcHtmlString resultString = null; string renderedResult = string.Empty; foreach (var item in per)
- {
- renderedResult += "<table><tr><td>" + item.PersonId + "</td> <td>" + item.PersonName + "</td></tr></table>";
- }
- resultString = new MvcHtmlString(renderedResult); return resultString;
- }
- }
- }
The method "ListData" is an extension method for the HtmlHelper class. This returns a "MvcHtmlSting" that contains a HTML Table with Person data in it.
Task 4: Build the project and ensure that it is error free.
Task 5: Add a new PersonController in the project in the Controller Project and add a constructor and an Index action as in the following:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using RAZOR_MVC3_Html_Helper_Methods.Models;
- namespace RAZOR_MVC3_Html_Helper_Methods.Controllers
- {
- public class PersonController : Controller
- {
- PersonList personList;
- public PersonController()
- {
- personList = new PersonList();
- }
-
-
- public ActionResult Index()
- {
- return View(personList);
- }
- }
- }
Task 6: Now generate an "Empty" Scaffold "Index" view from the person controller with "PersonList" as Model class as in the following:
Task 7: An Empty View will be generated. Add the following code in an Empty view:
- @model RAZOR_MVC3_Html_Helper_Methods.Models.PersonList
- @{
- ViewBag.Title = "Index";
- }
- <h2>Index</h2>
- <br /> <br /> <br /> <br />
My New Extension Method to Display Data
@Html.ListData(Model)
The preceding markup shows that the ListData method is called using an object of the HtmlHelper class.
Task 8: In "_Layout.cshtml" add an ActionLink for the newly added Index page "menucontainer" div tag as in the following:
<li>@Html.ActionLink("Person", "Index", "Person")</li>
Task 9: Run the application, you will get the Person Tab. Click on it, and get the result.