Показать целое число в представлении - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в 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 голосов
/ 01 ноября 2018

Я не совсем знаком с Giraffe (скорее Fable), поэтому я не знаю, что установить и настроить для его воспроизведения.

Тем не менее, глядя на p [] [ ... ], становится ясно, что функция требует список в качестве второго параметра, и поэтому все элементы должны быть одного типа.

Давайте посмотрим внутрь. Согласно GiraffeViewEngine.fs , 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 # для преобразования объекта в целое число. В любом случае, он не возвращает ничего типа XmlNode. Вместо этого попробуйте

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

Таким образом, вы получите ToString возраст, он превратится в Text регистр XmlNode и код должен скомпилироваться.

...