只有 DotVVM 代码的组件不会正确生成 HTML 结构

DotVVM code only component dont generate HTML structure correctly

我有自己的树视图菜单组件,我想生成这样的 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.

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

这是因为 InnerText 属性 的工作方式与经典 HTML 中的工作方式相同。它替换元素内的所有子元素。