KendoUI列中心自定义MVC扩展方法

时间:2014-08-19 22:00:53

标签: css kendo-ui kendo-grid extension-methods kendo-asp.net-mvc

我正在寻找一种为KendoUI列创建自定义扩展方法的方法,这种方法允许我使用扩展方法轻松地将css类添加到标题或单元格本身。

现在我使用以下内容来整理标题和单元格的内容:

columns.Bound(x => x.Value).HeaderHtmlAttributes(new { @class = "cent" }).HtmlAttributes(new { @class = "cent" });

分css类是:

.cent { text-align:center; }

对我而言,这似乎有很多代码可以用来编写这么简单的东西。

我正在寻找的是一个创建自定义列构建器扩展方法的解决方案,我可以这样做:

columns.Bound(x => x.Value).CenterHeader().CenterCell();

其中CenterHeader()和CenterCell()将是自定义扩展方法,分别将此css类添加到标题和单元格。如果这可能是IMO,代码看起来会更清晰。

有没有人知道这样做的方法?

1 个答案:

答案 0 :(得分:3)

为什么不直接创建这些扩展?

using Kendo.Mvc.UI.Fluent;

namespace MyNamespace
{
    public static class MyExtensions
    {
        public static GridTemplateColumnBuilder<T> CenterHeader<T>(this GridTemplateColumnBuilder<T> builder) where T : class
        {
            return builder.HeaderHtmlAttributes(new { @class = "cent" });
        }

        .....
    }
}

Views/web.config中添加此命名空间(以便您不应该一直导入它):

<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      ......
      <add namespace="Kendo.Mvc.UI"/>
      <add namespace="MyNamespace"/>
      ......
    </namespaces>
  </pages>
</system.web.webPages.razor>