Asp.net mvc 3 视图模型无法识别扩展方法?

Asp.net mvc 3 视图模型无法识别扩展方法?,asp.net-mvc-3,extension-methods,Asp.net Mvc 3,Extension Methods,我的视图中有一个Html.globalizedPageLinks扩展方法,但得到一条红线,表明我的viewmodel不包含该方法,并且我有一些无效参数 这句话: <div class="actions-left"> <%= Html.GlobalisedPageLinks(Amico.Web.Mvc.Extensions.Enums.PageLinksFormat.Empty, Model.CurrentPage, Model.PageSize, Model.Total,

我的视图中有一个Html.globalizedPageLinks扩展方法,但得到一条红线,表明我的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>

Action(“Index”,“Scorm”,new{area=“Admin”,page=x}))%>
扩展方法:

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>";
}
@using Amico.Web.Mvc.Extensions.YourExtensionClass
public静态字符串globalizedPageLinks(此HtmlHelper html、Amico.Web.Mvc.Extensions.Enums.pageLinks格式、int-currentPage、int-pageSize、int-totalResults、Func-pageUrl)
{
int totalPages=Math.Max(转换为32(数学上限((双)totalResults/pageSize)),1);
int startresult=((数学最大值(1,当前页)-1)*pageSize)+1;
int endresult=Math.Min(startresult+(pageSize-1),totalResults);
字符串pagesText=html.Resource(Resources.Global.PageLinks.PageLinks格式页、当前页、总页);
字符串resultsText=html.Resource(Resources.Global.PageLinks.PageLinks格式结果、startresult、endresult、totalResults);
string firstText=html.Resource(Resources.Global.PageLinks.First);
字符串previousText=html.Resource(Resources.Global.PageLinks.Previous);
字符串nextText=html.Resource(Resources.Global.PageLinks.Next);
string lastText=html.Resource(Resources.Global.PageLinks.Last);
返回“”+html.PageLinks(格式、当前页面、页面大小、totalResults、页面URL、,
pagesText、resultsText、firstText、previousText、nextText、lastText)+;
}
我错过了什么?
谢谢

您需要在视图中将using语句添加到包含扩展方法的类中:

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>";
}
@using Amico.Web.Mvc.Extensions.YourExtensionClass
如果需要在多个视图中访问此扩展类,还可以在视图文件夹内的web.Config中将其名称空间作为已知名称空间添加(此示例适用于MVC3,主机将与MVC4不同):



my view文件夹确实有一个web.config,但它是包含该名称空间的主web.config,因此现在我不知道:)如果显式添加using语句会发生什么情况?我可以这样做,但如果我这样做,boss将使我的代码检查失败!哈哈,让我快速问他:)你需要将页面名称空间添加到视图文件夹中Web.config的pages部分,而不是主Web.config。查看我的更新答案-如果您没有该Web.config,可以添加它:)