1

タブベースの Web アプリケーションを構築しています。

AJAX 呼び出しの後に次のコードを使用して、JavaScript から新しいタブを読み込むことができます。

 tabStrip.append(
 {
      encoded: false,
      id: id,
      text: name + html,
      content: divData                        
 });

しかし、起動時にいくつかのタブをロードする必要があり、ロードするタブの数がわかっている場合 (そして変更されていない場合)、Razor で次のように実行できます。

.Items(items =>
{
    items.Add().Text("Home").Content(@Html.Action("Load","Home").ToHtmlString()).Selected(true);
    items.Add().Text(Model[0].Name).HtmlAttributes(new { id = Model[0].Id.ToString(CultureInfo.InvariantCulture) }).Content(@Html.Action("Index", Model[0].Controller).ToHtmlString());
    items.Add().Text(Model[1].Name).HtmlAttributes(new { id = Model[1].Id.ToString(CultureInfo.InvariantCulture) }).Content(@Html.Action("Index", Model[1].Controller).ToHtmlString());
}

しかし、BindTo 構文では、ここまでしか取得できません。

.BindTo(Model, (item, tab) =>
{
    item.Text = tab.Name;  //Needs to not be encoded!
    item.ContentUrl = tab.Url;
    item.Id = Id does not exist!
       or 
    item.HtmlAttributes = cannot be set!
})

残念ながら、KendoUI の Web サイトには、最も基本的なもの以外の良い例はありません。

4

1 に答える 1

4

次のように「手動バインド」を使用できます。

.Items(items =>
{
    foreach (var tab in Model.MyTabs) {
        // any logic you need here, for example 
       items
          .Add()
          .Text(tab.Name)
          .HtmlAttributes(new { id = tab.Id.ToString() })
          .Content(@Html.Partial("MyTabView", tab.Model).ToHtmlString());
    }
}

したがって、基本的にタブの動的コレクションがある場合は、このコレクションを手動で反復処理し、各タブを個別に構成できますBindTo。ここでは使用する必要はありません。

于 2014-08-15T10:47:24.300 に答える