RazorEngine: возможно ли использовать в приложении Webforms?
Можно ли использовать движок Razor ( http://razorengine.codeplex.com/) в веб-приложении? Я использую файлы для определения шаблонов, например
Sample.cshtml
<h1>Hello</h1>
Или sample2.cshtml (с наследниками для включения intellisense)
@inherits SomeBaseClass<SomeModelClass>
<h1>Hello @Model.SomeProperty</h1>
При запуске приложения я компилирую шаблоны:
//get files and loop
RazorEngine.Razor.Compile(templateString, razorPath);
В коде позади пользовательского элемента управления я загружаю / анализирую шаблон:
RazorEngine.Razor.Run<SomeModelClass>(model, razorPath);
Проблема:
Sample.cshtml дает следующее исключение:
Тип "ASP._Page_razor_Sample_cshtml" не наследуется от "System.Web.UI.UserControl".
Sample2.cshtml дает следующее исключение (ниже приведен код, где происходит исключение, извлеченное из скомпилированного источника cshtml...):
CS0103: имя "Контекст" не существует в текущем контексте
Line 37: protected ASP.global_asax ApplicationInstance {
Line 38: get {
Line 39: return ((ASP.global_asax)(Context.ApplicationInstance));
Line 40: }
Line 41: }
Можно ли вообще использовать движок Razor?
2 ответа
Эта проблема никак не связана с двигателем Razor. Я использовал параметр somehwere в моей CMS, который оказался зарезервированным словом (недокументированным!). С помощью path
поскольку имя параметра, где оно также используется самой системой, может привести к довольно странным результатам... Тем более, если значение параметра действительно является путем, ведущим к файлу...
Я нашел некоторую информацию об использовании Razor с Master Pages / Partials:
http://www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx
Хотя я не думаю, что вы можете использовать его в основном в веб-формах.
Однако Скотт разместил проект на NuGet, который облегчил включение MVC в приложении WebForms, поэтому это может быть полезно, если вы просто пытаетесь использовать его для определенных вещей в вашем приложении. Он продемонстрировал это в своей беседе с NuGet с Филом Хааком в Mix: