仅DotVVM代码组件不能正确生成HTML结构

时间:2017-08-18 10:05:24

标签: dotvvm

我有自己的树视图菜单组件,我想生成这样的HTML结构。

<a href>
    <span class="something">
        <i class="icon"></i>
    </span>
</a>

这是我为我的菜单生成结构的代码

public void DataBindItem(DotvvmControl parent, AdminMenuListDTO item, IDotvvmRequestContext context)
    {
        var li = new HtmlGenericControl("li");


        if (item.HasCategories)
        {
            //holder pro ikonu (šipku ukazující možnost rozbalení menu)
            var iClassContainer = new HtmlGenericControl("span");
            iClassContainer.Attributes.Add("class", "pull-right-container");

            //ikona pro šipku ukazující možnost rozbalení menu
            var iClass = new HtmlGenericControl("i");
            iClass.Attributes.Add("class", "fa fa-angle-left pull-right");

            li.Attributes.Add("class", "treeview expandable");
            if (!string.IsNullOrEmpty(item.Name))
            {
                var ahref = new HtmlGenericControl("a");
                ahref.InnerText = item.Name;
                ahref.Attributes.Add("class", "tree-toggler nav-header");
                ahref.Attributes.Add("id", item.Id.ToString());

                // add <a href> to <li> 
                li.Children.Add(ahref);

                // add <span> container to <a href> 
                ahref.Children.Add(iClassContainer);

                // add <i class> to <span> which contains icon 
                iClassContainer.Children.Add(iClass);
            }

            var childContainer = new HtmlGenericControl("ul");
            childContainer.Attributes.Add("class", "nav nav-list tree");
            childContainer.Attributes.Add("style", "display:none;");

            foreach (var child in item.AssignedToMenuItem)
            {
                DataBindItem(childContainer, child, context);
            }

            li.Children.Add(childContainer);
        }
        else
        {
            li.Attributes.Add("style", "treeview");
            if (item.RouteName != null)
            {
                var routeLink = new RouteLink();
                routeLink.RouteName = item.RouteName;
                routeLink.Text = item.Name;
                routeLink.Attributes.Add("class", "js_isRoute_" + item.Id.ToString());
                routeLink.Attributes.Add("id", item.Id.ToString());
                li.Children.Add(routeLink);
            }
        }
        parent.Children.Add(li);
    }

问题是我的整个结构没有在我的视图中呈现,我只看到了这一点。我的<a href>代码还应包含spani

enter image description here

我的structre没有正确呈现,但在我的组件中vs的调试模式下,我看到它正确生成。我做错了什么?

enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为InnerText属性的工作方式与传统HTML中的相同。它取代了元素中的所有子元素。