Websharper:使用LI标签

时间:2014-09-15 14:57:06

标签: f# websharper

我想创造类似的东西:

<ul>
    <li>menu1
         <ul>
             <li>sub-menu1</li>
         </ul>
    </li>
    <li>menu2</li>
</ul>

所以我使用WebSharper编写以下代码:

let el =
        UL [
            LI [
                Text "menu1"
                UL [
                    LI [Text "sub-menu1"]
                ]
            ]
            LI [Text "menu2"]
        ]

但是它说

UL [
    LI [Text "sub-menu1"]
]

的类型应为IPagelet,但目前的类型为Element

有没有人知道如何使用WebSharper在li元素下放置文本+其他内容?

编辑:只是说我有一个关于stakc的错误,我无法评论或接受@Tarmil的答案...

1 个答案:

答案 0 :(得分:8)

此处的问题是,同一列表中的两个元素Text "menu1"UL [...]分别具有类型IPageletElementElementIPagelet的子类型,所以这应该有用,但不幸的是F#类型推断在这种情况下有一些困难。因此,您需要将UL [...]转换为IPagelet

来提供帮助
let el =
    UL [
        LI [
            Text "menu1"
            UL [
                LI [Text "sub-menu1"]
            ] :> IPagelet
        ]
        LI [Text "menu2"]
    ]

事实上,如果组合器的类型为seq<IPagelet> -> Element而不是seq<#IPagelet> -> Element,则会消除此问题。我们可能会将它们改为未来,但由于这将是一次重大变革,我们会将其保留在下一个主要版本中。