1

Telerik MVC拡張機能のソースコードを見ているだけで、テンプレート列がどのように機能するかを一生理解することはできません。うまく動作させることはできますが、本当に便利だと思うので、内部で何が起こっているのかを理解しようとしています。ソースコードをステップスルーしましたが、まだ少し混乱しています。これは、ソースコードのサンプルプロジェクトの例です。

  Html.Telerik().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Template(c => { 
            %><img 
                alt="<%= c.CustomerID %>" 
                src="<%= Url.Content("~/Content/Grid/Customers/" + c.CustomerID + ".jpg") %>" 
              /><% 
        }).Title("Picture");
        columns.Bound(c => c.ContactName).Title("Name");
        columns.Bound(c => c.Phone);
    })
    .Sortable()
    .Scrollable(scrolling => scrolling.Height(250))
    .Pageable()
    .Render();

列=>{}デリゲートはタイプAction<GridColumnFactory<T>> であり、モデルはタイプでIEnumerable<T>あり、c=>{}デリゲートはタイプAction<TModel>です。私が理解していることですが、GridColumnFactoryのTemplateメソッドには、パラメーターとしてアクションが与えられています。

このアクションは、必要なHTMLをレンダリングするためにどのように使用されますか?

ありがとう !!!

4

1 に答える 1

3

ここでの魔法は、TelerikがASP.NET Webページ内のすべてのコンテンツ(HTML、JavaScriptなど)が実際Response.Writeにページコンパイラによって-のような呼び出しに変換されるという事実を使用することです。

例えば;

<% Action action = () => { %><h1>Title</h1><% }; %>

このC#コードのようなものに変換されます:

Action action = () => { Response.Write("<h1>Title</h1>"); };

これを理解すれば、他の方法と何ら変わりはありません。Telerikは、セルごとに、コンパイラによって生成されたAction1つ以上の呼び出しを含む、気付かずに書いたものを呼び出すだけです。Write

于 2012-11-27T13:52:53.700 に答える