2012-05-16 40 views
3

我正在嘗試創建一個非常簡單的投票表單,並且我想要使用剃鬚刀而不是使用外部控件。Umbraco - 如何使用剃刀腳本設置屬性的值

我創建了一個表單,列出了一個問題和答案列表,當我們按下提交時,我們轉到調用處理結果的剃刀腳本的頁面。

我想要做的是循環所有的答案,並增加一個他們的計數器。每個Answer對象上都有一個名爲「Counter」的數字屬性。

然而,這仍然失敗。如果我這樣做:

var objAnswer = @Model.NodeById(Int32.Parse(submittedAnswer)); 
objAnswer.getProperty("Counter").Value++; 

或類似的方式,他們都失敗。什麼是奇怪的是,objAnswer.getProperty(「計數器」)確實包含了一些,但是當我嘗試設置它,我得到這個錯誤:

umbraco.MacroEngines.DynamicNull' does not contain a definition for 'Value' 

我得到 我也試圖與

Document post = new Document(objAnswer.Id); 
post.Publish(user); 

但這也失敗了。

有沒有簡單的方法來實現這一目標?


答案是這樣的!

 Document doc = new Document(objAnswer.Id); 
     doc.getProperty("counter").Value = 34; 
     umbraco.BusinessLogic.User author = umbraco.BusinessLogic.User.GetUser(0); 
     doc.Publish(author); 
     umbraco.library.UpdateDocumentCache(doc.Id); 

不是說屬性需要小寫。

回答

0

Model.NodeById()返回一個DynamicNode對象,其屬性是隻讀的。您肯定會想要轉到Document路由,特別是因爲Node和DynamicNode都從XML緩存中獲取數據,而Document處理數據庫。

+0

謝謝!我用Document來解決它。 – Nick