ユーザーにグリッドを表示して、エンドユーザーが「非コンテンツ部分」のデータを表示および管理できるようにするカスタムモジュロを作成しています。このデータは、外部ソースからデータベースへのデータ フィードです。モジュールは、簡単にするために、次のように 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 内のスタンドアロン アプリのようです。
これは、ホーム コントローラーの非常に単純なコードです。
[Themed]
public class HomeController : Controller
{
public ActionResult Index()
{
return View("XpiManager");
}
}
を使用しているThemedAttribute
ため、エンドユーザーは、サブアプリケーションのようなものではなく、サイドの内側にいるように感じます...
グリッドにいくつかの優れたエンドユーザー機能を追加する必要があり、完全な KendoUI パッケージを含む Telerik のコントロールの完全なサブスクリプションを持っているので、サーバー側のラッパーを使用してテンプレート コードでこのグリッドを作成したいと考えています。現在、次のプレースホルダー コードがあります。
<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 の両方でかなりの初心者です (ただし、Orchard ではもう少し経験があります...)