Вызывающий метод в представлении на веб-страницах Razor

#.net #asp.net #razor

#.net #asp.net #razor

Вопрос:

У меня есть пользовательский базовый класс представления, который наследуется от WebPage. Я хочу в Razor вызвать метод в этом классе, но я продолжаю получать ошибки, в которых говорится: «метод ‘X’ не существует в текущем контексте». Поскольку я по сути использую метод, как и любой другой метод (например, RenderPage), почему это не работает? Чего мне здесь не хватает?

У меня действительно зарегистрировано мое представление, потому что я использую другие его методы в @functions блоке…

  <system.web.webPages.razor>
    <pages pageBaseType="Nucleo.Web.Views.BaseViewWebPage" />
  </system.web.webPages.razor>
  

Комментарии:

1. Вы получаете эту ошибку в VS designer или во время выполнения?

2. Представления не компилируются. Что произойдет, если вы нажмете F5?

3. Начата сборка> Ошибка сборки «Ошибка 1 Имя ‘RenderViewPage’ не существует в текущем контексте C:..Parent.cshtml 20 7 C:… »

4. Используете ли вы цель MSBuild для файлов CSHTML?

5. @Slaks Это обычный ASP.NET Веб-сайт Razor без специальной сборки, кроме указания моего пользовательского базового типа страницы, как указано выше. Все хорошо работает с моей реализацией; он отлично строится, и я могу вызвать любой из моих базовых методов просмотра в блоке functions { } веб-страницы Razor (другие методы вызываются там нормально), но не внутри представления в качестве вызова RenderViewPage…

Ответ №1:

Я не знаю почему, но DLL никогда не обновлялась, и именно поэтому я получал сообщение об ошибке. Когда я удалил его и перестроил, он работает нормально.

Ответ №2:

Судя по ошибке, похоже, что вы пытаетесь вызвать RenderViewPage() , но на веб-странице такого метода нет. Я предполагаю, что вместо этого вы хотите вызвать RenderPage() , что должно сработать.