1

我正在使用,当我在服务器端的代码后面创建一个节点时,我有些困惑,我需要向我的节点添加一个引用字段,但我不知道该怎么做。

我尝试了一些类似的东西node["user"] = node1

但它不起作用。

4

2 回答 2

1

Sensenet 中的所有内容(数据)都构造为二叉树,其中节点引用其内容类型定义 ( CTD )中指定的特定内容对象。当一个节点引用另一个节点时——也就是说,它指向树中的另一个位置——它可以是两种类型之一。

  1. 它可以指向任何节点,或者
  2. 它可以被限制为特定类型,如 CTD 中所指定。

如果您正确分配了一个引用但出现错误,则很可能您违反了 CTD 中的类型约束。请参阅下面的示例。

特定类型的参考节点的 CTD(部分)

<ContentType name="Agent" parentType="GenericContent" handler="Code.ContentHandlers.Agent" xmlns="http://schemas.sensenet.com/SenseNet/ContentRepository/ContentTypeDefinition">
  <DisplayName>Agent</DisplayName>
  <Icon>Content</Icon>
  <Fields>

   <Field name="Category" type="Reference">
      <DisplayName>Agent Category</DisplayName>
      <Description></Description>
      <Configuration>
        <AllowedTypes>
          <Type>AgentCategory</Type>
        </AllowedTypes>
        <VisibleBrowse>Show</VisibleBrowse>
      </Configuration>
    </Field>

  </Fields>
</ContentType>

将节点分配给上面定义的类别引用的示例 C# 代码。

var path = "/Root/PathToAgentCategory";
var agentCat = Node.LoadNode(path) as AgentCategory;
myAgentNode.Category = agentCat;       // Syntax if you have a ContentHandler
myAgentNode["Category"] = agentCat;    // Syntax for the GenericContent ContentHandler
于 2016-11-23T17:07:45.777 回答
0

您应该阅读我找到的文档以添加参考字段,您应该使用类似这样的东西

node.Addreferences("User", user1);

user1 是一个节点,代表您需要在您的字段中引用的用户

于 2016-10-26T08:45:01.297 回答