2012-02-15 47 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. 添加DLL作爲Assembly Reference
  2. 註冊的供應商在你的web.config

編輯

正如你所說,該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 2012-02-15 21:21:01

+0

這很好,但你實際添加組件參照:http://msdn.microsoft.com/en-us/library/ wkze6zky(v = vs.80).aspx – Jesse 2012-02-15 21:21:56

+0

是的,我已經添加了對dll的引用MvcSitemapProvider版本3.1.0.0 該項目是從MVC2升級到MVC 3 – user1005310 2012-02-15 21:28:39

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 2012-10-29 20:51:09

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