Используйте CreateInstanceFromVirtualPath в MVC и WebPages 2

В WebPages Razor v1 можно вызывать функции между cshtml-страницами, используя следующий синтаксис:

@{
    dynamic hlp = WebPage.CreateInstanceFromVirtualPath("/newhelper.cshtml");
}
@hlp.SomeHelper("foo")

То же самое невозможно в Razor v2 (ошибка нулевой ссылки). И не в MVC (что, вероятно, менее удивительно). Я хочу знать, есть ли другой способ сделать то же самое в Razor v2.


person joeriks    schedule 04.03.2013    source источник


Ответы (1)


Выполнение кода, показанного в вопросе, не поддерживается - он просто пытается смоделировать некоторую логику, которая может или не может быть эквивалентна тому, что действительно происходит при компиляции веб-страниц/Razor.

Помощники веб-страниц должны находиться в файлах CSHTML в ~/App_Code. Код там должен быть доступен для всех других страниц просмотра в приложении.

person Eilon    schedule 04.03.2013
comment
Хорошо, спасибо за ответ. Я добавил хак в качестве тега. Вместо этого я использую RazorEngine и/или Roslyn. - person joeriks; 05.03.2013
comment
Я пошел другим путем — использовал RenderPage с небольшим количеством сахара: joeriks.com/2013/03/06/ - person joeriks; 06.03.2013