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

Properties Umbraco-如何使用razor脚本设置属性值,properties,razor,set,umbraco,Properties,Razor,Set,Umbraco,我正在尝试创建一个非常简单的投票表单,我想尝试使用razor,而不是使用外部控件 我已经创建了一个表单,其中列出了一个问题和一系列答案,当我们按submit时,我们将进入调用razor脚本的页面,该脚本将处理结果 我要做的是循环遍历所有答案,并将它们的计数器增加1。每个应答对象上都有一个称为“计数器”的数值属性 然而,这一直在失败。如果我这样做: var objAnswer = @Model.NodeById(Int32.Parse(submittedAnswer)); objAnswer.ge

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

我已经创建了一个表单,其中列出了一个问题和一系列答案,当我们按submit时,我们将进入调用razor脚本的页面,该脚本将处理结果

我要做的是循环遍历所有答案,并将它们的计数器增加1。每个应答对象上都有一个称为“计数器”的数值属性

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

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);
不是说属性需要小写。

Model.NodeById()返回一个DynamicNode对象,其属性为只读。您肯定要走文档路线,尤其是因为节点和DynamicNode都从XML缓存中获取数据,而文档操纵数据库