找不到方法:'System.Web.Mvc.MvcHtmlString System.Web.Mvc.Html.LinkExtensions.RouteLink(System.Web.Mvc.HtmlHelper,System.String,System.Object)'

时间:2010-01-27 13:19:21

标签: asp.net-mvc

我有一个项目,它是在MVC1下开发的,几个月前我在MVC2中升级了它。

一切都很好,从我需要格式化计算机的那天开始。

格式出了什么问题?我不知道笑

我在格式化之后安装了MVC2,我导入现有项目,构建它,并且在构建时没有显示错误,但是从我将它上传到生产服务器时,我收到此错误。

  

找不到方法:   “System.Web.Mvc.MvcHtmlString   System.Web.Mvc.Html.LinkExtensions.RouteLink(System.Web.Mvc.HtmlHelper,   System.String,System.Object)'。

我无法理解导致问题的原因。

当然我认为这与MVC1有关,我引用了它,但没有再好运。

Theese是解决问题的方法

public static string PagerLinks(this HtmlHelper htmlHelper, string controllerName,
            string actionName, int pageCount, int pageIndex, string cssClass, string moreTextCssClass,
            string currentPageCssClass, int totalProducts) {
            return PagerLinks(htmlHelper, controllerName, actionName, pageCount, pageIndex, "First",
                "Previous", "Next", "Last", "more pages", cssClass, moreTextCssClass,
                currentPageCssClass, totalProducts);
        }

public static string PagerLinks(this HtmlHelper htmlHelper, string controllerName,
            string actionName, int pageCount, int pageIndex, string firstPage, string previousPage,
            string nextPage, string lastPage, string moreText, string cssClass, string moreTextCssClass,
            string currentPageCssClass, int totalProducts) {
            var builder = new StringBuilder();
            if (String.IsNullOrEmpty(controllerName))
                throw new Exception("controllerName and actionName must be specified for PageLinks.");
            if (pageCount <= 1)
                return String.Empty;


            if (String.IsNullOrEmpty(cssClass)) builder.Append("<div>");
            else builder.Append(String.Format("<div class=\"{0}\">", cssClass));

            builder.Append(string.Format("{0} <b>{1}</b>", "total", totalProducts));
            builder.Append("<br />");

            if (pageIndex != 1) {
                // first page link
                builder.Append(
                        htmlHelper.RouteLink( "First", new {
                            controller = controllerName,
                            action = actionName,
                            id = 1
                        }, new { title = firstPage }
                                            )
                                            );
////
///
more code
///
///
}

这是调用语法

<%=Html.PagerLinks((string)ViewData["Controller"], "Page", (int)ViewData["TotalPages"], (int)ViewData["Page"], "theCssClass", "theMoreTextCssClass", "theCurrentPageCssClass", (int) ViewData["TotalProducts"])%>

内部PagerLinks方法存在这一行,我认为这是, 正如错误信息所说,错误。

htmlHelper.RouteLink( "First", new {controller = controllerName,action = actionName,id = 1}, new { title = firstPage })

但是我只是在通过

调用时才收到错误
<%=Html.PagerLinks((string)ViewData["Controller"], "Page", (int)ViewData["TotalPages"], (int)ViewData["Page"], "theCssClass", "theMoreTextCssClass", "theCurrentPageCssClass", (int) ViewData["TotalProducts"])%>

如果我注释掉上面的行并将其替换为以下行仅用于测试,则没有任何反应

htmlHelper.RouteLink( "First", new {controller = controllerName,action = actionName,id = 1}, new { title = firstPage })

我会感激任何建议

3 个答案:

答案 0 :(得分:0)

检查web.config中的任何引用,并确保它引用了System.Web.MVC的v2。

答案 1 :(得分:0)

我在从MVC1更新到MVC2时自己得到了这个:

<%=Html.ActionLink<AccountController>(a=>a.LogOut(),"Logout") %>

如果您使用MVC Futures(就像我在上面的ActionLink中所做的那样)或MVC Contrib,请不要忘记将这些更新为MVC2。它肯定解决了我的问题。

祝你好运/ Lasse

答案 2 :(得分:0)

当我遇到此问题时,我更新了我的System.Web.MVC.dll版本 C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies,然后停止/重新启动我的Web服务器,所有这些都是对的。