[ELMA3] Добавление вкладок в стандартный элемент "TabPanel"
В статье приведен пример добавления вкладки, формируемой на стороне сервера, в стандартный элемент TabPanel при помощи реализации точки расширения.
Пример отображения данных
Рис. 1. Добавленная вкладка с разметкой при помощи реализации точки расширения
Методы расширения (интерфейса)
Точка расширения (интерфейс) ITabProviderExtension имеет два основных метода:
- public string IdTabPanal(HtmlHelper html) – определяет панель вкладок, для которой предназначено данное расширение, возвращаемое имя должно соответствовать уникальному имени панели вкладок.
- publicIEnumerable<TabPanelItem> Items(HtmlHelper html) – определяет действия, которые необходимо произвести для построителя таблицы. В нашем примере добавляются вкладка, разметка которой определена файлом шаблона отображения. Для отображения вкладки также задействован метод контроллера, который формирует необходимую информацию.
Пример класса точки расширения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | using System.Collections.Generic; using System.Web.Mvc; using EleWise.ELMA; using EleWise.ELMA.ComponentModel; using EleWise.ELMA.Web.Mvc.ExtensionPoints; using EleWise.ELMA.Web.Mvc.Html; using EleWise.ELMA.Web.Mvc.Models.Selectors; namespace ObjectIconModule.Web.ExtensionPoint { [Component] public class TabProviderExtension : ITabProviderExtension { public IEnumerable<TabPanelItem> Items(HtmlHelper htmlHelper) { yield return new TabPanelItem { ContentUrl = htmlHelper.Url().Action( "SelectedTabItem" , "Home" , RouteProvider.AreaName), //Ссылаемся на действие SelectedTabItem в контроллере Home TabIndex = 0, //Положение вкладки Selected = true , //По умолчанию вкладка - выбрана Text = SR.T( "Вкладка первая" ) //Название вкладки }; } public string IdTabPanal(HtmlHelper htmlHelper) { return "MyPanel" ; //Идентификатор панели (Должен совпадать с идентификатором в представлении) } } } |
В данном примере используется ссылка на действие SelectedTabItem в контроллере Home, код которого приведен ниже.
Код контроллера HomeController.cs :
1 2 3 4 5 | [ContentItem] public ActionResult SelectedTabItem() { return PartialView(); } |
В приведенном примере контроллер возвращает представление SelectedTabItem.cshtml, в котором находится Ваша разметка. В примере использовалась следующая разметка:
<div>
Ваша разметка
</div>
Чтобы использовать данное расширение, необходимо добавить метод .UseTabProvider(true) при создании вкладок TabPanel("MyPanel") на Вашем представлении.
Пример использования на форме:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @(TabPanel( "MyPanel" ) .Items(tabstrip => { tabstrip.Add( new EleWise.ELMA.Web.Mvc.Models.Selectors.TabPanelItem() { Text = SR.T( "Вкладка" ), Selected = false }).Content( @<div> @Html.Partial( "TabPanel" ) </div> ); }) .UseTabProvider( true ) .Render() ) |
В разметке создается новая панель с вкладкой Вкладка, которая по умолчанию не выбрана (т.к. выбранная по умолчанию вкладка реализована при помощи точки расширения), разметка вкладки находится в представлении TabPanel.cshtml.
Ссылки на элементы API
ITabProviderExtension (для версии 3.13)