MVC3 MvcSiteMap () - PullRequest
       31

MVC3 MvcSiteMap ()

3 голосов
/ 16 февраля 2012

Я использую вид бритвы MVC3. MvcSitemapProvider dll версия 3.1.0.0

Когда я использую это @Html.MvcSiteMap().SiteMap() в моем razorview, я получаю следующее сообщение об ошибке

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 (как root, так и в представлении web.config).

Есть ли еще что-то, на что мне нужно взглянуть?

Ответы [ 3 ]

0 голосов
/ 30 октября 2012

Ваш корневой 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" />

Убедитесь, что у вас установлена ​​новейшая версия MVC SiteMap из здесь .

Надеюсь, это поможет!

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

Я мог бы решить эту проблему, добавив 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>
}
0 голосов
/ 16 февраля 2012

Вы добавили MvcSitemapProvider.dll в качестве ссылки в рамках проекта, в котором вы пытаетесь использовать его?

Я предполагаю, что вы не сделали его как шаг из двух частей:

  1. Добавить dll как Ссылка на сборку
  2. Зарегистрировать провайдера в вашем web.config

Редактировать :

Как вы упомянули, что dll визуализируется физически, при ближайшем рассмотрении ваша настройка файла web.config может быть немного неправильной.Для справки вот Руководство по установке .

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

Похоже, что вы зарегистрировали только html помощник s в web.config

...