Хочу сделать свои HtmlHelper, но так что бы первый екстеншен, после Html, был мой, а после этого уже HtmlHelper, как в Kendo.
Пример:
@(Html.MyExtensions().TabStrip()
.Name("tabs")
.Collapse(true)
)
Создал для этого клас HTMLHelperExtension и сделал метод расширения на клас HtmlHelper где мето возвращает клас
public static class HTMLHelperExtension
{
public static TabsExtensions MyExtensions(this HtmlHelper @this)
{
return new TabsExtensions();
}
}
public class TabsExtensions
{
public TabsExtensions TabStrips()
{
return new TabsExtensions();
}
}
После этого сделал класс TabStrip где методы Name(), Collapsible() росширяют клас TabsExtensions
public static class TabStrip
{
public static MvcHtmlString Name(this TabsExtensions @this, string name)
{
..................................
}
public static MvcHtmlString Collapsible(this TabsExtensions @this, bool collapsible)
{
..................................
}
}
Проблема вот в чем, я могу использовать только один метод расширения или Name или Collapsible.
@(Html.MyExtensions().TabStrip()
.Name("tabs")
.Collapse(true) <-----этот метод уже не работает
)
Из метода Name вы возвращаете MvcHtmlString, а метод Collapse принимает на вход TabsExtensions. Возвращайте всегда TabsExtensions из ваших методов расширений и тогда получится вызывать их цепочкой. И добавьте один метод, который из сконфигурированных TabExtensions генерировать строку.
public static class TabStrip
{
public static TabsExtensions Name(this TabsExtensions @this, string name)
{
// заменен возвращаемый тип
..................................
}
public static TabsExtensions Collapse(this TabsExtensions @this, bool collapsible)
{
// заменен возвращаемый тип
..................................
}
public static MvcHtmlString Render(this TabsExtensions @this)
{
return @this.RenderString(); -- здесь может быть любой другой код, который генерирует строку, это приведён как пример
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
url содержит кириллицу, изначально закодированную в HEX - %20%2B%A0 и тдТак вот если сделать WebRequest
Была взята за основу готовая база данных и по ней создан контекст и модели таблицСвязал таблицы в конструкторе таблиц таким образом: countrylanguage...
Как сохранить график, построенный с помощью Chart в PDF формате?
Имеется две таблицы "CarsSet" и "MotorSet" со связью многие ко многимТретья (связывающая таблица в EF не видна)