1

そこで、typeproviders を使用していくつかのデータをアプリケーションに追加しました ( github link )。ここに問題があります。

1)私が望んでいたのは、Site.fsデータを使用し、与えたルールに従ってdivを構築することです。すべてがうまく見えます....

バックエンドの計算を WebSite プロジェクトに入れましたが、おそらく Web はスタートアップ プロジェクトであるため、WebSite での計算は実行されず、データベースにプッシュされることもありません。データベースに既に存在するデータのみ表示されます。

${title}さらに、fsharp で提供されるテキストの代わりに本文のみが存在する場合があります (デフォルトのサイトレット サンプル サイトを使用していても)。それは正常ですか?ビジュアルスタジオを再起動すると役立ちます。

PS: コードが見栄えがよくない場合は申し訳ありませんが、最初に動作させてからリファクタリングします。

4

1 に答える 1

3

ご想像のとおり、最上位の値(yourなどSite.items)は、アプリケーションの起動時に1回計算されます。ページが読み込まれるたびに計算する場合は、を受け取る関数内で計算する必要があります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 に答える