2012-08-08 3 views
1

그래서 내 응용 프로그램에 typeproviders를 사용하여 일부 데이터를 추가했습니다 (github link) 그래서 여기에 문제가 있습니다.Typeproviders, websharper, f #, 빌드 순서

1) 내가 원했던 것은 내 Site.fs이 데이터를 사용하고 내가 준 규칙에 따라 div를 작성한다는 것입니다. ....

나는 WebSite 프로젝트에 백 엔드 계산을 넣었으며 아마도 웹은 WebSite의 시작 프로젝트 계산이 수행되지 않았으며 결코 데이터베이스에 푸시되지 않았기 때문입니다. 이미 데이터베이스에있는 데이터 만 표시됩니다.

경우에 따라서는과 fsharp (기본 sitelet 샘플 사이트를 사용하는 경우도 있음)에서 제공되는 텍스트 대신 본문이 있습니다. 그게 정상인가요? Visual Studio를 다시 시작하면 도움이됩니다.

피씨 : 죄송합니다. 내 코드가 너무 멋지게 보이지 않는다면 먼저 작동하도록하고 이후에는 리팩터링합니다.

+0

지금 당장 답을 얻었 으리라 생각합니다. 문제가되는 코드의 샘플을 여기에 직접 포함시킬 수 있다면 장래의 방문객에게 좋을 것입니다. (링크 부패와 당신이 github에서 코드를 업데이트 할 것이라는 사실을 고려하여). – Benjol

답변

3

짐작 하시겠지만 최상위 값 (예 : Site.items)은 응용 프로그램 시작시 한 번 계산됩니다. 모든 페이지로드시 계산되도록하려면 Context<Action>을받는 함수 내에서 계산해야합니다. [1]

예를 들어, 다음과 같이 뭔가를 할 수 : getItems 이후

다음
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] ] 
        ] 
     ] 

는 기능, 그것은 반환 값은 let items = getItems()으로 요청마다 계산합니다.


[1] 사용하는 경우 Sitelet.Infer으로 전달 된 기능 내에서 수행 할 수도 있습니다. 예를 들어 items에 따라 다른 템플릿을 사용하려는 경우 Content을 반환하려는 경우 items에 따라 달라집니다.

+0

나는 내 코드를보고 오류를 찾아내는 데 시간을 할애하여 (쉽게 바보 같았다) 큰 tnx를 알아 냈습니다. – borkdorkfork