public void Can_Generate_Page_Links() { //Arrange -define an Html helper -we need to do this //in order to apply the extension method HtmlHelper myHelper = null; //Arrange -create PagingInfo data PagingInfo pagingInfo = new PagingInfo() { CurrentPage = 2, TotalItems = 28, ItemsPerPage = 10 }; //Arrange -set up the delegate using a lamda expression Func<int, string> pageUrlDelegate = i => "Page" + i; //Act MvcHtmlString result = myHelper.PageLinks(pagingInfo, pageUrlDelegate); //Assert Assert.AreEqual(result.ToString(),@"<a href=""Page1"">1</a>" +@"<a class=""selected"" href=""Page2"">2</a>"+ @"<a href=""Page3"">3</a>"); }
public static MvcHtmlString PageLinks(this HtmlHelper html,PagingInfo pagingInfo, Func<int,string> pageUrl ) { StringBuilder result= new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPages; i++) { TagBuilder tag= new TagBuilder("a");//Construct an <a> tag tag.MergeAttribute("href",pageUrl(i)); tag.InnerHtml = i.ToString(); if(i==pagingInfo.CurrentPage) tag.AddCssClass("selected"); result.Append(tag.ToString()); } return MvcHtmlString.Create(result.ToString()); }