просмотр бритвы в веб-проекте asp.net - PullRequest
5 голосов
/ 15 ноября 2011

Я сейчас изучаю движки представлений, и Razor Views стали для меня очень интересными. Я нахожусь в процессе разработки приложения веб-форм asp.net 4.0. Razor рассматривает примеры из того, что я мог найти, преимущественно с приложениями MVC.

Можно ли интегрировать представления Razor в приложение веб-форм? Это выгодно делать? Основная причина, по которой я собираюсь это сделать, - это создать новый слой для моей архитектуры приложений и, возможно, новую область, которую можно протестировать.

1 Ответ

3 голосов
/ 15 ноября 2011

Конечно можно! Используя проект WebPages от Microsoft, вы можете загружать бритвенные классы так же, как при обычной загрузке UserControl, указав путь к файлу класса / бритвы. Вы получаете обратно экземпляр WebPage , который вы можете выполнить и который даст вам строку, которую вы можете распечатать на своей странице.

Я сделал это сам, реализовал Функциональность Razor для Composite C1 CMS , а исходный код для него находится в свободном доступе с http://compositec1contrib.codeplex.com/. Я выделю здесь важные части.

Убедитесь, что у вас есть поставщик сборки для файлов .cshtml, зарегистрированных в web.config

Убедитесь, что у вас есть необходимые настройки конфигурации system.web.webPages.razor

Создание экземпляра файла .cshtml, подобного этому var webPage = WebPage.CreateInstanceFromVirtualPath(_relativeFilePath); ( см. Документ )

Получите вывод класса Razor следующим образом

var httpContext = new HttpContextWrapper(HttpContext.Current);
var pageContext = new WebPageContext(httpContext, webPage, null);

var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
   webPage.ExecutePageHierarchy(pageContext, writer);
}

string output = sb.ToString();

Просто выведите строку на страницу WebForms

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