Umbraco - 如何使用razor脚本设置属性的值

时间:2012-05-16 13:06:52

标签: properties razor set umbraco

我正在尝试创建一个非常简单的轮询表单,并且我想使用razor而不是使用外部控件来使用它。

我创建了一个列出一个问题和一个答案列表的表单,当我们按下提交时,我们转到调用处理结果的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);

并非该属性需要小写。

1 个答案:

答案 0 :(得分:0)

Model.NodeById()返回一个DynamicNode对象,其属性是只读的。您肯定希望使用Document路由,特别是因为Node和DynamicNode都从XML缓存中获取数据,而Document则操纵数据库。