2013-03-08 91 views
2

我在我的視圖中有一個Html.GlobalisedPageLinks擴展方法,但得到一個紅線說明我的viewmodel不包含該方法,我有一些無效的參數?查看模型無法識別擴展方法?

此行:

<div class="actions-left"> 
    <%= Html.GlobalisedPageLinks(Amico.Web.Mvc.Extensions.Enums.PageLinksFormat.Empty, Model.CurrentPage, Model.PageSize, Model.Total, x => Url.Action("Index", "Scorm", new { area = "Admin", page = x }))%> 
</div> 

擴展方法:

public static string GlobalisedPageLinks(this HtmlHelper html, Amico.Web.Mvc.Extensions.Enums.PageLinksFormat format, int currentPage, int pageSize, int totalResults, Func<int, string> pageUrl) 
{ 
    int totalPages = Math.Max(Convert.ToInt32(Math.Ceiling((double)totalResults/pageSize)), 1); 

    int startresult = ((Math.Max(1, currentPage) - 1) * pageSize) + 1; 
    int endresult = Math.Min(startresult + (pageSize - 1), totalResults); 

    string pagesText = html.Resource(Resources.Global.PageLinks.PageLinksFormatPages, currentPage, totalPages); 
    string resultsText = html.Resource(Resources.Global.PageLinks.PageLinksFormatResults, startresult, endresult, totalResults); 
    string firstText = html.Resource(Resources.Global.PageLinks.First); 
    string previousText = html.Resource(Resources.Global.PageLinks.Previous); 
    string nextText = html.Resource(Resources.Global.PageLinks.Next); 
    string lastText = html.Resource(Resources.Global.PageLinks.Last); 

    return "<span class='page-links'>" + html.PageLinks(format, currentPage, pageSize, totalResults, pageUrl, 
    pagesText, resultsText, firstText, previousText, nextText, lastText) + "</span>"; 
} 

我失去了什麼? 感謝

回答

2

您需要在您的視圖中添加using語句的類包含擴展方法:

@using Amico.Web.Mvc.Extensions.YourExtensionClass 

如果您需要在許多視圖訪問此擴展類,你還可以添加命名空間它作爲你的意見文件夾中的web.config中已知命名空間(本例中是MVC3,主機將是不同的MVC4):

<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="Amico.Web.Mvc.Extensions" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+0

我的視圖文件夾確實有一個web.config,但它的主要網站.config包含那個名字空間,所以現在我不知道:) – 2013-03-08 08:37:12

+0

如果明確添加using語句,會發生什麼情況? – levelnis 2013-03-08 08:38:41

+0

我可以做到這一點,但如果我這樣做,老闆會讓我的代碼審查失敗! LOL讓我快問他:) – 2013-03-08 08:42:52