[英]Typeproviders, websharper, f#, builiding order
所以我使用typeproviders将一些数据添加到我的应用程序中( github链接 )所以这就是问题所在。
1)我想要的是我的Site.fs
使用数据并根据我给它的规则构建div。 一切都很好看,除了....
我把结束计算放回到WebSite项目中,可能是因为Web是WebSite中的启动项目计算从未完成过,也从未推送过数据库。 它只显示已存在于数据库中的数据。
另外,有时只有${title}
和body而不是fsharp中提供的文本(即使使用默认的sitelet示例站点)。 这是正常的吗? 重启visual studio有帮助。
PS:对不起,如果我的代码看起来不那么引人注目,我希望它首先工作,之后我会重构它。
正如您猜测的那样,在应用程序启动时会计算一次顶级值(例如您的Site.items
)。 如果您希望在每次加载页面时计算它,则需要在接收Context<Action>
的函数内计算它。 [1]
例如,您可以执行以下操作:
let getItems() =
seq {
for i in borkData.parseData.db.ONEPOST do
yield [i.Title; i.Link; i.Poslodavac; i.MjestoRada; i.RokZaPrijavu]
}
let JobsPage =
Skin.WithTemplate "Jobs" <| fun ctx -> // this is the function that gets called for every page
let items = getItems()
[
for i in items ->
Div [Class "job"] -<
[
A [Class "title"] -< [HRef i.[1]] -< [ Text i.[0]]
P [Class "posted top"] -< [ Text i.[3] ]
P [Class "employer"] -< [ Text i.[2] ]
]
]
这里,因为getItems
是一个函数,所以每次你使用let items = getItems()
求它时,它会计算它的返回值。
[1]您也可以在传递给Sitelet.Infer
的函数内部执行此操作。如果您使用它,请执行此操作。 如果要返回的Content
取决于items
,例如,如果您想根据items
使用不同的模板,这将非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.