определение ошибки и отсутствие метода расширения для System.Web.Routing.RouteValueDictionary - PullRequest
0 голосов
/ 28 января 2011

Я прохожу учебник на веб-сайте 4GuysFromRolla по Сортировке и разбиению по страницам таблицы данных в ASP.NET MVC 2 от Скотта Митчелла.Я получаю сообщение об ошибке CS1061: «System.Web.Routing.RouteValueDictionary» не содержит определения для «AddQueryStringParameters» и не найден метод расширения «AddQueryStringParameters», принимающий первый аргумент типа «System.Web.Routing.RouteValueDictionary».(вам не хватает директивы using или ссылки на сборку?).Я не уверен, если мне нужно добавить ссылку на DLL или что-то еще.Пожалуйста, может кто-нибудь посоветовать, как решить эту проблему заранее.Также я скачал демо, и нет проблем.ошибка в файле PagerLink.ascx..routeData.AddQueryStringParameters ();// ошибка, указывающая здесь

RouteValueDictionaryExtensions.cs выглядит следующим образом (это вспомогательный файл) ...

using System.Web.Routing;
namespace Web
{
  public static class RouteValueDictionaryExtensions
  {
     public static RouteValueDictionary  
     AddQueryStringParameters(this RouteValueDictionary dict)
     {
       var querystring = HttpContext.Current.Request.QueryString;

        foreach (var key in querystring.AllKeys)
            if (!dict.ContainsKey(key))
                dict.Add(key, querystring.GetValues(key)[0]);

        return dict;
    }

    public static RouteValueDictionary ExceptFor(this RouteValueDictionary  
                dict, params string[] keysToRemove)
    {
        foreach (var key in keysToRemove)
            if (dict.ContainsKey(key))
                dict.Remove(key);

        return dict;
    }
}

}

Global.asax.cs выглядит следующим образомэто ...

enter code here
namespace GridDemosMVC
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = 
            UrlParameter.Optional } // Parameter defaults
   );

  }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterRoutes(RouteTable.Routes);
    }
}
}

Я также использую файл Dynamic.cs, который доступен для загрузки в Microsoft.

Ответы [ 3 ]

1 голос
/ 28 января 2011

Вам необходимо добавить оператор using и директиву <%@ Import для пространства имен с помощью метода расширения.

Кроме того, вы можете переместить метод расширения в пространство имен вашего проекта.

0 голосов
/ 25 февраля 2011

См. Веб-пространство имен в 2 пользовательских элементах управления (PagerLink.ascx & SmartLink.ascx), как показано ниже.

<%@ Import Namespace="Web"%>

Если вы изменили существующее пространство имен, используйте соответствующее пространство имен вашего проекта.

0 голосов
/ 13 февраля 2011

добавить в файл PagerLink.ascx <% @ Import Namespace = "пространство имен вашего проекта"%>

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