[MVC] Własny HtmlHelper z ustawieniami

0

Cześć,
Chciałbym zbudować własny HtmlHelper dla jakiejś (dowolnej) kontroli z możliwością określenia ustawień parametrów (nazwa, wysokość, szerokość, kolumny - dla tabeli) w sposób jak np. umożliwiają to kontroli telerik:

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.ContactName)
            .ClientTemplate(
                @"<div class='customer-photo' 
                    style='background-image: url(" + @Url.Content("~/content/web/Customers/#:data.CustomerID#.jpg") + ");'></div><div class='customer-name'>#: ContactName #</div>")
              .Width(240);
            columns.Bound(c => c.ContactTitle);
            columns.Bound(c => c.CompanyName);
            columns.Bound(c => c.Country).Width(150);
        })
        .HtmlAttributes(new { style = "height: 550px;" })
        .Scrollable()
        .Groupable()
        .Sortable()
        .Pageable(pageable => pageable
            .Refresh(true)
            .PageSizes(true)
            .ButtonCount(5))
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("Customers_Read", "Grid"))
            .PageSize(20)
        )
    )

lub np. DevExpress:

@Html.DevExpress().GridView(settings => {
    settings.Name = "gridView";
    settings.CallbackRouteValues = new { Controller = "DataBinding", Action = "SimpleCustomBindingPartial" };
    settings.CustomBindingRouteValuesCollection.Add(
        GridViewOperationType.Paging,
        new { Controller = "DataBinding", Action = "SimpleCustomBindingPagingAction" }
    );
    settings.CustomBindingRouteValuesCollection.Add(
        GridViewOperationType.Sorting,
        new { Controller = "DataBinding", Action = "SimpleCustomBindingSortingAction" }
    );

    settings.Width = Unit.Percentage(100);
    settings.Columns.Add("From").Width = Unit.Pixel(200);
    settings.Columns.Add("Subject");
    settings.Columns.Add(column => {
        column.FieldName = "Sent";
        column.ColumnType = MVCxGridViewColumnType.DateEdit;
        column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
        column.Width = Unit.Pixel(100);
    });
    settings.Columns.Add("Size").Settings.AutoFilterCondition = AutoFilterCondition.Equals;
    settings.Columns.Add("HasAttachment", "Attachment?", MVCxGridViewColumnType.CheckBox).Width = Unit.Pixel(100); ;

    settings.ClientSideEvents.Init = "function(s, e) { s.PerformCallback(); }";
    settings.ClientSideEvents.BeginCallback = "function(s, e) { OnStartCallback(s, e); }";
    settings.ClientSideEvents.EndCallback = "function(s, e) { OnEndCallback(s, e); }";

    DevExpress.Web.Demos.GridViewFeaturesHelper.SetupGlobalGridViewBehavior(settings);

}).BindToCustomData(Model).GetHtml()

Oczywiście rodzaj parametrów byłby uzależniony od rodzaju kontrolki którą chciałbym zbudować.
Wpadł komuś w oko jakiś tutorial...

1 użytkowników online, w tym zalogowanych: 0, gości: 1