2011-08-04 16 views
0

UrlHelperクラスの拡張機能で問題が発生しています。これまで私は次のことを行ってきました:Razor imported namespace

1)Viewsフォルダにあるweb.configのセクションに名前空間を追加しました。私はまた、web.configのメインに追加しました。

<system.web.webPages.razor>

2)は、csprojファイル内System.Web.Mvc参照がMVC3のためであることを確認しました。また、System.Web.WebPagesとSystem.Web.Helpersの参照が含まれていることを確認しました。

3)csproj ProjectTypeGuidsが正しいことを確認してください。

{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

4)はbindingRedirectがMVC3を指していることをチェックします。

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Googleには何か別のものはありません。

コードは(非関連のものが取り除かで)次のとおりです。

<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="NAMESPACE OF YOUR EXTENSION CLASS" /> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 

および/リロードをアンロード:このに追加するフォルダービューの下のweb.configファイルで

namespace MyNameSpace.Controllers.Extensions 
{ 
    using System.Web.Mvc; 
    using System.Web.Routing; 

    using Contracts.Entities; 
    using Controllers.Routing; 

    public static class UrlHelperExtensions 
    { 
     public static string BrowseLink(this UrlHelper urlHelper, ICategory category) 
     { 
      var routeValueDictionary = new RouteValueDictionary 
       { 
        { "categorypath", BrowsePath.Serialize(catagory) }, 
        { "pagenumber", "1" } 
       }; 

      return urlHelper.Action("Index", "Browse", routeValueDictionary); 
     } 
    } 
} 
+0

u Web.Configの ''セクションへの参照を追加しましたか? '? – Eranga

+0

申し訳ありませんが、私はポイント1で意味したことです。 – Chewy

答えて

0

プロジェクト。問題が解決しない場合は、cshtmlまたはvbhtmlページの上に@usingディレクティブを使用し、Extensionクラスをインポートしてください。ところで、あなたが「UrlHelperの拡張機能」と言うとき、私は第一引数としてthis UrlHelper helperを持つメソッドを持つ静的クラスを持っていることを理解しています。この場合は、まず@using指示文を使用してcshtmlで動作するかどうかを確認してからweb.configに追加してください。

+0

はい、私はポイント1の最初の部分をやった - 私はそれをより明確にする必要があります。 UrlHelperメソッドは、あなたが '@ using'ステートメントを追加しようとしましたが、成功しませんでした。 – Chewy

+0

ヘルパークラスを貼り付けることはできますか?おそらく、その中にhelper以外の何かがあります。なぜなら、@ useを使っている間でさえ、それが動作していないと思われる理由です。 – Zasz

+0

私の間違い - 私は '@ Url.BrowseLink(...)'の代わりに '@ UrlHelper.BrowseLink(...)'を呼んでいました。 – Chewy