1

所以我在我的应用程序中添加了一些使用 typeproviders 的数据(github链接)所以这就是问题所在。

1)我想要的是我Site.fs使用数据并根据我给它的规则构建div。一切看起来都很好,除了......

我将后端计算放入 WebSite 项目中,可能是因为 Web 是 WebSite 中的启动项目计算从未完成,也从未推送到数据库中。它只显示已经在数据库中的数据。

另外,有时${title}fsharp 中只提供了正文而不是文本(即使使用默认的 sitelet 示例站点)。这正常吗?重新启动 Visual Studio 会有所帮助。

PS:对不起,如果我的代码看起来不那么壮观,我希望它首先工作,然后我会重构它。

4

1 回答 1

3

如您所料,顶级值(例如 your 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().


Sitelet.Infer[1]如果您使用它,您也可以在传递给 的函数中执行此操作。Content如果您想要返回取决于,这将很有用items,例如,如果您想要使用不同的模板取决于items.

于 2012-08-08T16:31:00.000 回答