3

我正在尝试创建一个非常简单的投票表单,我想尝试使用剃须刀而不是使用外部控件。

我创建了一个表单,其中列出了一个问题和一个答案列表,当我们按下提交时,我们转到调用处理结果的 razor 脚本的页面。

我想要做的是遍历所有答案并将它们的计数器加一。每个 Answer 对象都有一个名为“Counter”的数字属性。

然而,这一直失败。如果我做:

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

或类似的方式,他们都失败了。奇怪的是 objAnswer.getProperty("Counter") 确实包含一个数字,但是当我尝试设置它时,我得到了这个错误:

   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);

并不是说该属性需要小写。

4

1 回答 1

0

Model.NodeById() 返回一个 DynamicNode 对象,其属性是只读的。您肯定会想走 Document 路线,特别是因为 Node 和 DynamicNode 都从 XML 缓存中获取数据,而 Document 操作数据库。

于 2012-05-16T16:39:59.493 回答