Метод не найден: 'System.Web.Mvc.MvcHtmlString System.Web.Mvc.Html.LinkExtensions.RouteLink (System.Web.Mvc.HtmlHelper, System.String, System.Object)' - PullRequest
1 голос
/ 27 января 2010

У меня есть проект, который был разработан под MVC1, и спустя несколько месяцев я обновил его в MVC2.

Все было хорошо, день, когда мне нужно было отформатировать компьютер.

А что может не получиться с форматом? Я не знаю, смеется

Я установил MVC2 после форматирования, импортирую существующий проект, создаю его, и во время сборки не отображается ошибка, но с момента загрузки на рабочий сервер я получаю эту ошибку.

Метод не найден: «System.Web.Mvc.MvcHtmlString System.Web.Mvc.Html.LinkExtensions.RouteLink (System.Web.Mvc.HtmlHelper, System.String, System.Object) '.

Я не могу понять, в чем причина проблемы.

Конечно, я предполагал, что это связано с MVC1, и ссылался на него, но опять не повезло.

Вот методы, с помощью которых возникла проблема

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 голосов
/ 28 января 2010

Я получил это сам при обновлении с MVC1 на MVC2 на:

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

Если вы используете MVC Futures (как я это делал в ActionLink выше) или MVC Contrib, не забудьте обновить их до MVC2. Это наверняка решило мою проблему.

Удачи / Лассе

0 голосов
/ 22 августа 2010

Когда у меня возникла эта проблема, я обновил свою версию System.Web.MVC.dll в C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Сборки, а затем остановили / перезапустили мои веб-серверы и все было в порядке с миром.

0 голосов
/ 27 января 2010

Проверьте наличие ссылок в вашем файле web.config и убедитесь, что он ссылается на v2 для System.Web.MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...