在SurfaceController中创建NestedContent项

时间:2016-04-08 14:50:53

标签: c# umbraco umbraco7

我有两种文档类型:

  1. FormSubmission
  2. FormField
  3. 表单文档类型有一个名为字段的属性,它是 Nested Content 数据类型,其中包含 FormField 文档类型。我正在尝试以编程方式(在SurfaceController中)创建 FormField 并将其添加到表单文档类型的 Fields 属性。

    以下是我尝试使用的代码:

    var newFormFields = new List<Umbraco.Core.Models.IContent>();
    int i = 0;
    foreach (var formField in model.Fields)
    {
        string fieldName = string.Format("Field {0}", i);
        var newFormField = contentService.CreateContent(fieldName, newFormSubmission.Id, "formFieldSubmission", formNode.CreatorId);
        newFormField.SetValue("fieldName", formField.Name);
        newFormField.SetValue("fieldType", formField.Type);
        newFormField.SetValue("manditory", formField.Manditory);
        newFormField.SetValue("fieldValue", formField.Value);
        newFormFields.Add(newFormField);
        ++i;
    }
    
    newFormSubmission.SetValue("fields", newFormFields);
    
    var status = contentService.SaveAndPublishWithStatus(newFormSubmission, formNode.CreatorId, raiseEvents: false);
    

    newFormSubmission.SetValue("fields", newFormFields);行,它会抛出此异常:

      

    'umbraco.Core.Models.ContentBase.SetPropertyValue(string,string)'的最佳重载方法匹配有一些无效的参数

    任何人都有任何想法如何在 Nested Content 数据类型中存储DocumentTypes列表?

    PS:我使用的是 Umbraco版本7.4.0程序集:1.0.5885.31226

    UPDATE:

    Lee Kelleher指出了我在this post on the umbraco forms中制定自己的解决方案的正确方向。我希望在这个项目之后有时间来完善我的解决方案并向项目提交拉取请求。

    我基本上最终创建了一些扩展方法,这些方法接受IEnumerable<IContent>并返回NestedContent plugin对象的JSON表示。

2 个答案:

答案 0 :(得分:0)

似乎SetPropertyValue方法的第二个参数需要string而你传递List<Umbraco.Core.Models.IContent>

答案 1 :(得分:0)

这个要点可以帮到你:

robertjf/NestedContentCreator.cs

第二个文件中有一个例子。它写于去年,可能需要一些调整;但它应该给你一个良好的开端。