Мне нравится Asp.Net MVC и я хочу использовать его в предстоящем проекте. Тем не менее, часть проекта - это акцент на возможности представить проект «Представления» дизайнерам для таких вещей, как тематика и т. Д. Одна из проблем, которую я ожидаю, заключается в том, что представления Asp.Net MVC довольно ориентированы на разработчиков. Я действительно не хочу, чтобы обучить дизайнер на intracies в <% против <% = не говоря уже что-то вроде <% Еогеаспа ...Дизайнерские представления в Asp.Net MVC
Возьмет типичную структуру меню MVC, например.
<div id="menu">
<ul>
<li><%= Html.ActionLink("Home", "Index", "Main")%></li>
<li><%= Html.ActionLink("About", "About", "Main")%></li>
<li><% Html.RenderPartial("LogOnUserControl"); %></li>
</ul>
</div>
Я бы предпочел быть в состоянии сказать дизайнерам идти с чем-то вроде
<div id="menu">
<ul>
<li>{ActionLink "Home", "Index", "Main"}</li>
<li>{ActionLink "About", "About", "Main"}</li>
<li>{Partial "LogOnUserControl"}</li>
</ul>
</div>
Или
<div id="menu">
<ul>
<li><my:ActionLink text="Home" action="Index" controller="Main" /></li>
<li><my:ActionLink text="About" action="About" controller="Main" /></li>
<li><my:Partial name="LogOnUserControl" /></li>
</ul>
</div>
Да, что последние выглядят подозрительно, как плот UserControls. Лично я не поклонник фактического использования UserControls для этого, хотя бы потому, что рендеринг этих элементов управления происходит после всего остального (как я понимаю), и я бы предпочел что-то, что больше соответствует жизненному циклу MVC , Все, что мне действительно нужно, это набор заполнителей и способ заменить их соответствующим рендерингом.
Итак, где лучшее место для этого и какие компромиссы я смотрю здесь. Я могу себе представить пару ракурсов:
- Пользовательский класс ViewPage, где я могу переопределить что-то важное. ViewPage.RenderView или ViewPage.FrameworkИнициализируйте, может быть, но как вы получаете текст оттуда, я не знаю.
- Создайте пользовательский TextWriter и переопределите ViewPage.CreateHtmlTextWriter, чтобы затем перехватить вывод текста для замены материала. Это довольно поздно в цикле, хотя, и будет возиться с другой пользовательской фильтрацией, если я не буду осторожен.
- Создайте собственные классы IView и ViewEngine. Я не ушел далеко по этому пути, прежде чем задаться вопросом, отправился ли я в очень плохое место.
- Пользовательские UserControls, которые могут имитировать необходимую функциональность.
Мнения? Другие варианты? Мой собственный ViewEngine мой лучший вариант? Моя собственная ViewPage? Или объекты UserControl будут адекватными (скажите нет)?
Ваши дизайнеры интерфейсов должны быть в порядке с синтаксисом по умолчанию. Я бы не приложил к этому слишком много усилий. В любом случае, MVC является огромным улучшением для их нужд. ;) –
Я бы ничего не создавал для ваших дизайнеров. Обучите их синтаксису и двигайтесь дальше. В противном случае вы будете придерживаться вашего вкуса ViewEngine. Когда появятся новые версии, возможны изменения ... –
Я хочу как можно меньше трения для дизайнеров. «Лучше, чем они привыкли», недостаточно. Я прекрасно разбираюсь в нарушениях, если они произойдут. Если это будет сделано правильно (т. Е. Централизованно в чем-то легко модифицированном), небольшая боль при обновлении предпочтительнее повторного обучения дизайнера. –