Я не совсем знаком с 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
и код должен скомпилироваться.