MVC3 / Razor: cshtml.Execute () ': не найден подходящий метод для переопределения - PullRequest
14 голосов
/ 26 января 2011

Я пытаюсь преобразовать сайт MVC2 в MVC3 с помощью RazorViewEngine.

Я использовал этот инструмент для обновления своего проекта и Telerik конвертер для преобразования моих представлений .aspx в Razor. Инструмент Telerik поместил строку @inherits в верхней части моих макетов (наследование от ViewMasterPage).

Когда я пытался запустить страницу, которая использовала один из этих макетов, я получил ошибку:

... cshtml.Execute (): не найден подходящий метод для переопределения

Я удалил тег @inherits, и он начал работать для моей домашней страницы. Тем не менее, я продолжал получать эту ошибку для другой страницы, используя тот же макет. И теперь, переместив некоторые вещи для решения проблемы Области, я вернулся к получению этой ошибки для всех моих страниц (те, которые я могу получить, во всяком случае).

Я пытался закрыть Visual Studio, удалить временные файлы и т. Д.

Ответы [ 3 ]

21 голосов
/ 26 января 2011

Разобрался - следующий раздел должен быть в web.config для бритвы - у меня это было в web.configs в Views каталогах, но не в root web.config:

 <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
4 голосов
/ 26 января 2011

Здесь может происходить несколько вещей.Убедитесь, что вы следуете этим рекомендациям

  • , у вас нет @inherits директив в ваших представлениях.если вы не используете пользовательский базовый класс страницы просмотра, они не нужны.Для строго типизированных представлений вы должны использовать директиву @model, чтобы указать тип модели.Для еженедельных просмотров вам ничего не нужно.
  • не смешивайте виды бритв с мастер-страницами aspx (или страницами aspx с макетами бритв), поскольку они не работают вместе легкоЭто включает в себя проверку всех ваших методов действий, где у вас есть код, такой как return View("ViewName", "MasterName"), поскольку это также может привести к использованию конфликтующих технологий templatign.
0 голосов
/ 26 января 2011

Если у вас все еще есть резервная копия вашего проекта MVC2, я бы попробовал использовать для этого инструмент, выпущенный Microsoft на MSDN. См. эту ссылку для получения дополнительной информации. Также Скотт Гатри написал что-то об этом в своих сообщениях в блоге, когда вышел MVC3, вы можете прочитать статью здесь .

Боюсь, я не могу дать вам прямого решения этого. Но звучит как ошибка или проблема в программном обеспечении преобразования от Telerik, который вы использовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...