Использование Brail View Engine с ASP.NET MVC

За последние 10 месяцев я провел немало разработок с ASP.NET MVC, но я никогда не использовал ни один из доступных пользовательских механизмов просмотра. ASP.NET MVC (как и другие реализации шаблона MVC) применяет механизм механизма представления как способ заменить методы рендеринга приложений. Очевидно, что наиболее часто используется встроенный механизм просмотра — теги <% стали синонимами ASP.NET и MVC.

Почему мы должны использовать любой другой View Engine?

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

<%  if (pagedList.PageCount > 1)
{
    for (int pageNumber = 1; pageNumber <= pagedList.PageCount; pageNumber++)
    {
        if (pageNumber == pagedList.PageCount)
        {
          %><li class="last"><%
        }
        else
        {
          %><li><%
        }
        if (pageNumber != pagedList.PageNumber)
        { %>
            <%=Html.ActionLink(pageNumber.ToString(), "Index", new { view = ((TradeView)ViewData["View"]).ToString(), page = pageNumber - 1, filter = (string)ViewData["FilterQuery"], sort = (string)ViewData["Sort"] })%>
     <% }
        else
        {
          %><%=pageNumber%><%
        }
          %></li><%
    }
} %>

Если мы скажем веб-дизайнеру оформить эту страницу, он не будет знать, с чего начать. Я пытаюсь понять, поможет ли использование другого движка представления сделать представление проще — меньше логики, больше HTML.

Начало работы с Brail

Brail был перенесен из MonoRail для работы с MVC и доступен как часть проекта MVC Contrib на Codeplex . Страница Brail на Codeplex содержит подробное объяснение, на какие сборки вам нужно ссылаться, как вам нужно изменить ваш web.config и как зарегистрировать движок Brail View в вашем контроллере.

Проблема в том, что все не так.

Насколько я могу судить, документация полностью устарела с последней версией MVC. Сначала я столкнулся с проблемами, когда попытался установить BrailViewFactory в качестве движка представления. В документации по Codeplex для этого используется следующий код.

public class HomeController : Controller
{
    public HomeController()
    {
        this.ViewFactory = new BrailViewFactory();
    }
}

Класс контроллера больше не имеет свойства ViewFactory ! Быстрый Google показал, что любая информация по этому вопросу была в равной степени устаревшей.

Итак, если вы хотите начать использовать Brail или любой другой пользовательский движок представления, вот что вы должны сделать.

  1. Скачать MVC Contrib с дополнениями .
  2. Добавить ссылки на
    1. Boo.Lang
    2. Boo.Lang.Compiler
    3. Boo.Lang.Extensions
    4. Boo.Lang.Parser
    5. MvcContrib
    6. MvcContrib.BrailViewEngine
  3. Добавьте новый раздел в тэг configSections вашего web.config
<section name="brail" type="MvcContrib.BrailViewEngine.BrailConfigurationSection, MvcContrib.BrailViewEngine"/>
And add a *brail* tag.
<brail debug="true" saveToDisk="false" batch="false" commonScriptsDirectory="CommonScripts" saveDirectory="CompiledViews" />
  1. Теперь нам нужно зарегистрировать движок вида при запуске.
protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    ViewEngines.Engines.Add(new BrailViewFactory());
}

Это все, что нам нужно. Спасибо Кейвану Найери за его пост на Брайле.

Виды и макеты

При работе с представлениями Brail есть два отличия от стандартного механизма просмотра ASP.NET. Во-первых, все представления должны иметь расширение .brail . Во-вторых, Brail имеет концепцию макетов — аналогично мастер-страницам.

Макеты должны храниться в папке « Макеты» . Мое первое впечатление, что я, вероятно, буду использовать более одного макета — это отличается от главных страниц, где я почти никогда не использовал больше, чем один.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>${Title}</title>
</head>
<body>
    <div>
        ${childOutput}
    </div>
</body>
</html>

$ {ChildOutput} переменная , где вид визуализации.

пример

Я создал очень простой пример, чтобы проиллюстрировать основы Брайля.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Title"] = "This is a title passed from the controller";
        ViewData["Message"] = "This is a message passed from the controller";
        ViewData["Time"] = DateTime.Now.ToString("dd/MMM/yyyy HH:mm");

        return View("Index", "Master");
    }
}

Обратите внимание, что я указываю, что должен использоваться макет Master — представление не знает об используемом макете.

<h1>${Message}</h1>
<p>The time is now ${Time}</p>

Здесь вы можете увидеть синтаксис для доступа к переменным из ViewData .

Резюме

Этот пост предназначен для ознакомления и установки руководства. В моем следующем посте я постараюсь создать более реалистичный пример. Я также взгляну на строго типизированные представления и итерации.

Пока что Брайль выглядит очень многообещающе.

Author: admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *