我正在使用Kendo.Mvc.UI.TreeViewItemModel
来构建kendo树视图。除了Id
和Text
属性之外,此类还具有HtmlAttributes
类型的IDictionary<string, string>
属性
我可以在构建模型时将任何其他数据添加到HtmlAttributes
属性中,而kendo会将这些Html属性呈现为树节点上的html data
属性。
public IEnumerable<TreeViewItemModel> BuildTreeView(IEnumerable<MyGroup> groups)
{
var nodes = new List<TreeViewItemModel>();
foreach (var grp in groups)
{
var root = new TreeViewItemModel()
{
Id = "0",
Text = grp.Key,
HasChildren = grp.Any()
};
foreach (var item in grp)
{
var dictionary = new Dictionary<string, string>();
dictionary.Add("data-template-id",item.TemplateID.ToString());
dictionary.Add("data-filename", item.FileName);
root.Items.Add(new TreeViewItemModel()
{
Text = item.DisplayText,
HasChildren = false,
HtmlAttributes = dictionary
});
}
nodes.Add(root);
}
return nodes;
}
@(Html.Kendo().TreeView()
.Name("MyTreeView")
.DataTextField("Text")
.BindTo(Model.Items))
然后在JS中我可以访问此数据
var _treeView = $("#MyTreeView").getKendoTreeView();
var htmlItem = _treeView.select();
var templateid = htmlItem.data("template-id");
var filename = htmlItem.data("filename");
只要我使用kendo的默认模板,这个工作正常。但是,如果我使用自定义模板,那么Kendo不会生成数据属性
@(Html.Kendo().TreeView()
.Name("MyTreeView")
.TemplateId("treeViewItemTemplate")
.BindTo(Model.Items))
<script type="text/x-kendo-tmpl" id="treeViewItemTemplate">
<span>#=item.text#</span>
# if (!item.items){#
<span class="glyphicon glyphicon-plus-sign" aria-hidden=true></span>
#}#
</script>
现在当页面呈现并使用F12时,如果查看树节点(li
标签),我就看不到任何数据属性