2012-02-15 8 views
3

MVC3カミソリビューを使用しています。 MvcSitemapProviderのDLLバージョン3.1.0.0MVC3 MvcSiteMap()

私はrazorviewでこの@Html.MvcSiteMap().SiteMap()を使用すると、私は次のエラーメッセージ

Method not found: 'Void System.Web.Mvc.WebFormView..ctor(System.String, System.String)'. 

を得る私は名前空間を登録している:

の両方で
<add namespace="MvcSiteMapProvider.Web.Html" /> 
<add namespace="MvcSiteMapProvider.Web.Html.Models" /> 

web.configファイル(ルートとビューweb.config)。

他にも見たいことがありますか?

答えて

0

MvcSitemapProvider.dllを、使用しようとしているプロジェクト内の参照として追加しましたか?

  1. があなたのweb.configファイル内のプロバイダを登録しAssembly Reference
  2. としてDLLを追加

編集

私はあなたがそのように2つの部分ステップを持っていないと仮定しています:

dllが物理的にレンダリングされていると言われているように、詳細を検討すると、web.co nfigは少しだけかもしれません。参考のためにここにはSetup Guideがあります。

<siteMap defaultProvider="MvcSiteMapProvider" enabled="true"> 
    <providers> 
    <clear /> 
    <add name="MvcSiteMapProvider" 
     type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" 
     /> 
    </providers> 
</siteMap> 

あなたのweb.configファイル内でのみregistered the html helper

+0

これは私のルートweb.configファイルは大丈夫ですが、あなたは、物理的にアセンブリ参照を追加しました – user1005310

+0

をどのように見えるかです:http://msdn.microsoft.com/en-us/library/ wkze6zky(v = vs80).aspx – Jesse

+0

はい、dll MvcSitemapProvider dllバージョン3.1.0.0への参照を追加しました このプロジェクトは、MVC2からMVC 3へのアップグレードです – user1005310

0

を持っていることをあなたのルートweb.configファイルには、ページに名前空間ノードを、これを持っている必要がありそうです。

 <add namespace="MvcSiteMapProvider.Web.Html" /> 

とも..

<siteMap defaultProvider="MvcSiteMapProvider" enabled="true"> 
    <providers> 
     <clear /> 
     <add name="MvcSiteMapProvider" 
      type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" 
      siteMapFile="~/Site.sitemap" <!-- This can be changed depending on your .sitemap file --> 
      securityTrimmingEnabled="true" 
      cacheDuration="5" 
      enableLocalization="true" 
      scanAssembliesForSiteMapNodes="true" 
      skipAssemblyScanOn="" 
      attributesToIgnore="bling" 
      nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" 
      controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" 
      actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" 
      aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" 
      siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" 
      siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" /> 
    </providers> 
    </siteMap> 

そして、あなたのビューのweb.configファイルで、

<add namespace="MvcSiteMapProvider.Web.Html" /> 
    <add namespace="MvcSiteMapProvider.Web.Html.Models" /> 

あなたはhereからMVCサイトマップの最新バージョンを持っていることを確認してください。

希望すると便利です。

+0

、共有_layoutで、私が持っている

himynameisriz

0

DisplayTemplatesを追加することでこの問題を解決できます。どのようにモデルを表示しなければならなかったのか。

例:

@model SiteMapNodeModel 

@if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() != "MvcSiteMapProvider.Web.Html.MenuHelper") { 
    <text>@Model.Title</text> 
} else if (Model.IsClickable) { 
    <a href="@Model.Url" class="@(Model.IsCurrentNode ? "selected" : string.Empty)" >@Model.Title</a> 
} 
else 
{ 
    <text>@Model.Title</text> 
}