Проверьте этот ответ для базового шаблона.С этого момента вы можете создавать вспомогательные классы, как показано ниже.Это необходимо создать, поскольку Scripts
является статическим классом и не может быть добавлен к вашему TemplateBase
как свойство, как классы HtmlHelper
и ViewDataDictionary
.
public class ScriptsHelper
{
public IHtmlString Render(params string[] scripts)
{
return Styles.Render(scripts);
}
}
Затем можно добавитьэти вспомогательные классы для вашего HtmlTemplateBase<T>
класса как публичные свойства
[RequireNamespaces("System.Web.Mvc.Html")]
public class HtmlTemplateBase<T>:TemplateBase<T>, IViewDataContainer
{
public ScriptsHelper Scripts = new ScriptsHelper();
//... Additional Code
}
Теперь ваше представление RazorEngine будет иметь доступ к функциям, добавленным в ваш вспомогательный класс.Таким образом, вы косвенно вызываете нужные вам функции и можете вызывать их так же, как и обычные классы.
// This will actually be calling ScriptsHelper.Scripts(), which then calls the static function
@Scripts.Render("~/scripts/scripturl")
Это несколько хакерские решения проблемы.Вам нужно будет расширить класс ScriptsHelper
с помощью каждой функции Scripts
, которая вам нужна.Тот же процесс можно выполнить и для вашего Styles
класса.
Возможно, вы сможете использовать класс Reference Resolver для импорта пространства имен System.Web.Optimization, но мне не удалось заставить его работать должным образом.