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 内のスタンドアロン アプリのようです。

これは、ホーム コントローラーの非常に単純なコードです。

[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 ではもう少し経験があります...)

4

1 に答える 1

1

テーマ プロジェクトに Kendo UI サーバー側コンポーネントへの参照を追加し、そこからヘルパーを使用できます。私は同じことをしましたが、それは魅力のように機能します。

ソース バージョンから実行していないために参照を追加できない場合は、別の方法を使用できます。<namespaces>Kendo UI 用の web.config ファイルの razor セクションにエントリを追加します。

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

必要なアセンブリへの参照も web.config ファイルに追加していることを確認してください。そうしないと、Web サイトが正しく動作しません。

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

  </assemblies>
</compilation>

それだけです。IRepository<T>あとは、Kendo UI コンポーネント ヘルパーで適切なメソッドを使用して呼び出すことで、データベースからレコードを取得するだけです。

于 2013-06-15T07:52:36.983 に答える