2011-01-28 11 views
0

私は、Scott MitchellのASP.NET MVC 2のデータグリッドのソートとページングに関する4GuysFromRollaのWebサイトでチュートリアルを行っています。 CS1061: 'System.Web.Routing.RouteValueDictionary'に 'AddQueryStringParameters'の定義がなく、 'System.Web.Routing.RouteValueDictionary'型の最初の引数を受け入れる拡張メソッド 'AddQueryStringParameters'が見つかりませんでした。 (usingディレクティブまたはアセンブリ参照がありませんか?)私はDLLの参照または何か他のものを追加する必要があるかどうかはわかりません。誰かが事前にこの感謝を解決する方法をアドバイスできますか?またデモをダウンロードしても問題ありません。エラーはPagerLink.ascxファイルにあります.routeData.AddQueryStringParameters(); //ここSystem.Web.Routing.RouteValueDictionaryのエラーの定義と拡張方法なし

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); 
    } 
} 
} 

また、MicrosoftからダウンロードできるDynamic.csファイルも使用しています。

答えて

1

拡張メソッドを使用して名前空間にusingステートメントと<%@ Importディレクティブを追加する必要があります。

また、拡張メソッドをプロジェクトの名前空間に移動することもできます。

+0

ここで、私がデモファイルに<%@ Importを使用していないので、私が尋ねる理由は、あなたがSystem.Web.Routingを使用していることを意味するのですか?ありがとう – DiscoDude

+0

いいえ;拡張メソッドを作成した名前空間をインポートする必要があります。また、ビューのWeb.configでインポートすることもできます。 – SLaks

+0

私は、共有ファイルに存在するアイテムを追加するときに何とかファイルが混ざっていると思います。したがって、名前空間を追加すると、ファイル名がGridDemosMVCのときにと表示されました。私はちょっとしたリトライを名前空間の名前をいくつかのエラーで改名していたので、プロジェクトを再開する必要があると結論づけました。あなたの助けSLaksありがとう。私がプロの環境でこの事件を閉じる前にちょうど1つの質問をすることは、jqGridやマニュアルコードのような第三者のファイルを使用してScott Mitchellが提供しているものを参照できることです。 – DiscoDude

0

は、以下のようにインポート名前空間= "プロジェクトの名前空間" @ <%ファイル%が>

0

が2つのユーザーコントロール(PagerLink.ascx & SmartLink.ascx)で名前空間のWebを参照してくださいPagerLink.ascxに追加します。既存の名前空間を変更した場合

<%@ Import Namespace="Web"%>

、プロジェクトの適切な名前空間を使用しています。

関連する問題