За последние 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 или любой другой пользовательский движок представления, вот что вы должны сделать.
- Скачать MVC Contrib с дополнениями .
- Добавить ссылки на
- Boo.Lang
- Boo.Lang.Compiler
- Boo.Lang.Extensions
- Boo.Lang.Parser
- MvcContrib
- MvcContrib.BrailViewEngine
- Добавьте новый раздел в тэг 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" />
- Теперь нам нужно зарегистрировать движок вида при запуске.
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 .
Резюме
Этот пост предназначен для ознакомления и установки руководства. В моем следующем посте я постараюсь создать более реалистичный пример. Я также взгляну на строго типизированные представления и итерации.
Пока что Брайль выглядит очень многообещающе.
Свежие комментарии