2012-12-31 95 views
0

我想从临ASP.NET MVC3框架学习MVC3。但我被困在一个地方,我们添加了自定义的Html Helper。自定义Html助手不工作

我做了本书中提到的所有东西,但我无法添加自定义Html帮助程序。

有人可以请帮忙。

感谢

List.cshtml

@model SportsStore.WebUI.Models.ProductListViewModel   


@{  
    ViewBag.Titke = "Product"; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <title>List</title> 
</head> 
<body> 
    <div> 
     @foreach (var p in Model.Products) 
     { 
      <div class="item"> 
       @p.Name 
       @p.Description 
       <h4>@p.Price.ToString("c")</h4>     
      </div> 
     } 
     <div class="Pager"> 
     @Html.PageLinks(Model.pagingInfo, x => Url.Action("List", new {page = x})) 
     </div> 
    </div>  
</body> 
</html> 

PagingHelper.Cs

using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using SportsStore.WebUI.Models; 
using System.Text; 

namespace SportsStore.WebUI.HtmlHelpers 
{ 
    public static class PagingHelper 
    { 
     public static MvcHtmlString PageLinks(HtmlHelper helper, PagingInfo pagingInfo, Func<int, string> pageUrl) 
     { 
      StringBuilder linkString = new StringBuilder(); 
      for (int i = 1; i <= pagingInfo.TotalPages; i++) 
      { 
       TagBuilder tag = new TagBuilder("a"); 
       tag.MergeAttribute("href", pageUrl(i)); 
       tag.InnerHtml = i.ToString(); 
       if (i == pagingInfo.CurrentPage) 
       { 
        tag.AddCssClass("selected"); 
       } 
       linkString.Append(tag.ToString()); 
      } 
      return MvcHtmlString.Create(linkString.ToString()); 

     } 
    } 
} 

的Web.Config

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
    <add namespace="SportsStore.WebUI.HtmlHelpers" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
+0

你会得到什么错误? – SLaks

+0

错误:System.Web.Mvc.HtmlHelper '不包含'PageLinks' – Vin05

+0

@ Vin05的定义 - 由于SLak在他的回答中指出,函数签名需要为public static MvcHtmlString PageLinks(这个HtmlHelper助手...' –

回答

3

您没有创建扩展方法。

要制作扩展方法,您需要用this关键字修饰第一个参数。

+0

谢谢,其作品 – Vin05