2

我正在编写一个自定义模数来向用户展示一个网格,以允许最终用户查看和管理“非内容部分”数据。该数据是从外部来源向数据库提供的数据。为简单起见,该模块为 mysite/Manager 路径注册了一个路由,如下所示:

public IEnumerable<RouteDescriptor> GetRoutes() {
    return new[] {
        new RouteDescriptor {
            Priority = 5,
            Route = new Route(
                "Manager/{controller}/{action}",
                new RouteValueDictionary {
                    {"area", "XpiManager"},
                    {"controller", "Home"},
                    {"action", "Index"}
                },
                new RouteValueDictionary(),
                new RouteValueDictionary {
                    {"area", "XpiManager"}
                },
                new MvcRouteHandler())
        }
    };

正如我们所看到的,它就像是 Orchard 中的一个独立应用程序。

这是 Home 控制器的非常简单的代码:

[Themed]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View("XpiManager");
    }
}

ThemedAttribute使最终用户感觉好像他仍然在里面,而不是在一种子应用程序中......

因为我需要一些不错的最终用户功能添加到网格中,并且因为我已经完全订阅了 Telerik 的控件,包括完整的 KendoUI 包,所以我想使用他们的服务器端包装器在我的模板代码中创建这个网格,当前具有以下占位符代码:

<h1>Site's Manager</h1>

是的,就是这样......我希望能够在这个模板中做这样的事情:

@model IEnumerable<Kendo.Mvc.Examples.Models.ProductViewModel>

@(Html.Kendo().Grid(Model)    
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.ProductID).Groupable(false);
        columns.Bound(p => p.ProductName);
        columns.Bound(p => p.UnitPrice);
        columns.Bound(p => p.UnitsInStock);
    })
    .Groupable()
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Products_Read", "Grid"))
    )
)

作为最后的手段,我可​​以使用带有 javascript 的仅客户端 Kendo UI,但这会使我更难绑定到我的数据源。我在 Kendo UI 和 Orchard 方面都是新手(尽管我在后者方面更有经验......)

4

1 回答 1

1

您可以在主题项目中添加对 Kendo UI 服务器端组件的引用,并从那里使用帮助程序。我做过同样的事情,它就像一个魅力。

如果您无法添加引用,因为您没有从源版本运行,这里有另一种可行的技术。<namespaces>在 web.config 文件的 razor 部分中添加一个条目以获取 Kendo UI 内容。

<system.web.webPages.razor>
  <pages pageBaseType="...">
    <namespaces>
      <add namespace="..." />
    </namespaces>
  </pages>
</system.web.webPages.razor>

确保您还在 web.config 文件中添加了对所需程序集的引用,否则网站将无法正常运行。

<compilation debug="..." targetFramework="4.0">
  <assemblies>
    <add assembly="..."/>

  </assemblies>
</compilation>

这里的所有都是它的。剩下的就是使用IRepository<T>Kendo UI 组件助手上的正确方法从数据库中获取记录。

于 2013-06-15T07:52:36.983 回答