[ELMA3] Добавление вкладок в стандартный элемент "TabPanel"
В статье приведен пример добавления вкладки, формируемой на стороне сервера, в стандартный элемент TabPanel при помощи реализации точки расширения.
Пример отображения данных

Рис. 1. Добавленная вкладка с разметкой при помощи реализации точки расширения
Методы расширения (интерфейса)
Точка расширения (интерфейс) ITabProviderExtension имеет два основных метода:
- public string IdTabPanal(HtmlHelper html) – определяет панель вкладок, для которой предназначено данное расширение, возвращаемое имя должно соответствовать уникальному имени панели вкладок.
- publicIEnumerable<TabPanelItem> Items(HtmlHelper html) – определяет действия, которые необходимо произвести для построителя таблицы. В нашем примере добавляются вкладка, разметка которой определена файлом шаблона отображения. Для отображения вкладки также задействован метод контроллера, который формирует необходимую информацию.
Пример класса точки расширения
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 :
[ContentItem]
public ActionResult SelectedTabItem()
{
return PartialView();
}
В приведенном примере контроллер возвращает представление SelectedTabItem.cshtml, в котором находится Ваша разметка. В примере использовалась следующая разметка:
<div>
Ваша разметка
</div>
Чтобы использовать данное расширение, необходимо добавить метод .UseTabProvider(true) при создании вкладок TabPanel("MyPanel") на Вашем представлении.
Пример использования на форме:
@(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)