Kendo Tabstrip MVC添加动态选项卡数

时间:2014-08-14 20:48:32

标签: c# asp.net-mvc html5 kendo-ui-mvc

我正在构建基于标签的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网站上确实没有很好的例子。

1 个答案:

答案 0 :(得分: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