Хочу сделать свои 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(); -- здесь может быть любой другой код, который генерирует строку, это приведён как пример
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости