Должен ли я создать метод расширения HtmlHelper, чтобы уменьшить дублирование рендеринга частичных представлений? - PullRequest
1 голос
/ 27 июля 2011

Допустим, у меня есть представление статистики, которое будет отображаться на разных страницах.Без каких-либо помощников мне придется использовать следующий код:

@section Statistic{
    @Html.RenderAction("Index", "Statistic", new { id = Model.UserId });
}

Но с созданием помощника я могу написать что-то вроде:

@section Statistic{
    @Html.Stats().For(Model.UserId);
}

Затем любые будущие изменения в Controller, ActionName илипараметр контроллера статистики нужно будет изменить в 1 месте, которое находится в моем StatsHtmlHelper

Некоторые из моих коллег жалуются, что этот помощник ничего не делает, но вызывает RenderAction, тогда он не должен существовать.Каково ваше мнение?

1 Ответ

3 голосов
/ 27 июля 2011

Создавая вспомогательный метод, вы уменьшаете сложность вызова RenderAction, ActionLink и подобных методов и избавляетесь от «волшебных строк». Но для каждого отдельного действия вам нужно создать другого помощника с вашим подходом (!), И это может создать другую сложность, особенно когда уже существуют инструменты сообщества для упрощения жизни в подобных случаях. Если вы делаете это для статистики, почему бы вам не сделать это для любого другого действия в вашем приложении? Я бы использовал T4MVC с перегрузками RenderAction, ActionLink, которые принимают ActionResult. С его помощью вы избавляетесь от волшебных строк и получаете исключения времени компиляции, когда изменяется ваш контроллер, действие или сигнатура параметра. С точными местами, отмеченными ошибкой компилятором, исправить их проще. С T4MVC ваша строка рендеринга статистики будет:

@{Html.RenderAction(MVC.Index.Statistic(Model.UserId));}

И методы T4MVC для общего подхода. Вы можете просто использовать их для каждого отдельного действия на протяжении всего проекта

...