繁体   English   中英

Typeprovider,websharper,f#,builiding order

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM