我正在编写一个自定义模数来向用户展示一个网格,以允许最终用户查看和管理“非内容部分”数据。该数据是从外部来源向数据库提供的数据。为简单起见,该模块为 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 方面都是新手(尽管我在后者方面更有经验......)