在视图中显示整数

时间:2018-10-31 19:35:56

标签: f#-giraffe

我是Giraffe的新手,很难显示整数。我的模特是

type Person =
    {
        FirstName   : string
        LastName    : string
        Age         : int
    }

我的看法是:

let index2 (model : Person) =
    [
        partial()
        p [] [
            encodedText model.FirstName
            br []
            encodedText model.LastName
            br []
            int model.Age
        ]
    ] |> layout

返回的错误消息是“列表中的所有元素必须具有相同的类型。那么如何显示年龄?

1 个答案:

答案 0 :(得分:0)

我对长颈鹿(而不是寓言)不太熟悉,所以我不知道该如何安装和设置以重现它。

尽管如此,从p [] [ ... ]看,很明显该函数需要一个列表作为第二个参数,因此那里的所有元素应该是同一类型。

让我们看看里面。根据{{​​3}},encodedText返回Text,在XmlNode DU中就是这种情况:

type XmlNode =
    | ParentNode  of XmlElement * XmlNode list
    | VoidElement of XmlElement
    | Text        of string

因此,这将设置整个列表的类型XmlNode

br函数定义为let br = voidTag "br",其中voidTag函数返回VoidElement,这是XmlNode DU中的另一种情况,所以很好。

所以我不知道您想用int model.Age说什么,int实际上是F#中的GiraffeViewEngine.fs,用于将对象转换为整数。无论如何,它不会返回任何类型XmlNode的东西。而是尝试

p [] [
    encodedText model.FirstName
    br []
    encodedText model.LastName
    br []
    encodedText (string model.Age)
]

因此,您将ToString的年龄,它将变成Text的{​​{1}}情况,并且代码应编译。