Основной вопрос: есть ли лучший способ выполнить создание элемента управления многократного использования?
Таким образом, идея состояла в том, чтобы создать элемент управления подкачкой, чтобы по существу перестать вводить практически одинаковую разметку для нескольких представлений. Это принимает это:
<%= Html.ActionLink("First", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.FirstPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Previous", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.PreviousPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Next", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.NextPage, amountToShow = Model.AmountToShow }))%>
|
<%= Html.ActionLink("Last", "Details", new RouteValueDictionary(new { parentForumId = Model.TopicId, pageNumber = Model.LastPage, amountToShow = Model.AmountToShow }))%>
И превращая это в это:
<%= Html.Pager("View", "Controller", "RouteName", Model, new Dictionary<String, Object> { {"parentForumId", Model.ParentForumId}}, " ") %>
Где, как вы можете видеть, я передаю нужный вид, контроллер, имя маршрута, модель и словарь, используемый для добавления переменных запроса в URL для ссылки.
Я обнаружил, что мне нужно создать метод расширения для класса HtmlHelper и по существу взять то, что в ASP.Net было полным классом (с хорошими методами, такими как CreateChildControls), и объединить все это в один основной метод, который возвращает строка.
Это предпочтительный способ сделать это? Одной из приятных особенностей ASP.Net была разметка для класса, так как у вас есть тег разметки html, который будет переводить свойства разметки в свойства класса. Это вообще сделано для более чистой разметки, но по общему признанию "поддельный" html. В этой ситуации у меня есть метод, который может быть подписью html длиной в милю. А поскольку у меня нет базового класса WebControl, каждый элемент управления, который я создаю, должен иметь вызовы методов с такими же базовыми потребностями, как, например, CssClass или ID.
Теперь, с учетом сказанного, я полагаю, что мог бы передать словарь атрибутов, так как
HtmlHelper.GenerateRouteLink
метод, который я использую, вызывает один раз, но это действительно кажется очень грязным.
Есть ли лучший способ сделать это?