Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在SurfaceController中创建嵌套内容项_C#_Umbraco_Umbraco7 - Fatal编程技术网

C# 在SurfaceController中创建嵌套内容项

C# 在SurfaceController中创建嵌套内容项,c#,umbraco,umbraco7,C#,Umbraco,Umbraco7,我有两种文档类型: 提交表格 福尔菲尔德 表单文档类型有一个名为字段的属性,该属性是一个数据类型,包含表单字段文档类型列表。我试图通过编程(在SurfaceController中)创建一个表单字段,并将其添加到表单文档类型的字段属性中 以下是我尝试使用的代码: var newFormFields = new List<Umbraco.Core.Models.IContent>(); int i = 0; foreach (var formField in model.Fields)

我有两种文档类型:

  • 提交表格
  • 福尔菲尔德
  • 表单文档类型有一个名为字段的属性,该属性是一个数据类型,包含表单字段文档类型列表。我试图通过编程(在SurfaceController中)创建一个表单字段,并将其添加到表单文档类型的字段属性中

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

    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);
    
    var newFormFields=newlist();
    int i=0;
    foreach(model.Fields中的var formField)
    {
    string fieldName=string.Format(“字段{0}”,i);
    var newFormField=contentService.CreateContent(fieldName,newFormSubmission.Id,“formFieldSubmission”,formNode.CreatorId);
    newFormField.SetValue(“fieldName”,formField.Name);
    newFormField.SetValue(“fieldType”,formField.Type);
    设置值(“manditory”,formField.manditory);
    newFormField.SetValue(“fieldValue”,formField.Value);
    newFormFields.Add(newFormField);
    ++一,;
    }
    SetValue(“字段”,newFormFields);
    var status=contentService.SaveAndPublishWithStatus(newFormSubmission、formNode.CreatorId、raiseEvents:false);
    
    newFormSubmission.SetValue(“字段”,newFormFields)上行它引发此异常:

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

    有人知道如何在数据类型中存储文档类型列表吗

    PS:我使用的是Umbraco 7.4.0版组件:1.0.5885.31226

    更新: 为我指明了在中开发自己的解决方案的正确方向。我希望有时间在这个项目后完善我的解决方案,并提交一个拉请求的项目


    基本上,我创建了一些扩展方法,这些方法采用
    IEnumerable
    并返回对象的JSON表示形式

    似乎
    SetPropertyValue
    方法的第二个参数需要一个
    string
    并且您正在传递一个
    List
    似乎
    SetPropertyValue
    方法的第二个参数需要一个
    string
    并且您正在传递一个
    List
    这个要点可能会帮助您:


    下面第二个文件中有一个示例。它是去年写的,可能需要一些调整;但是它应该给你一个好的开始。

    这个要点可能会帮助你:



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

    有点过时,但您是否碰巧尝试重新创建Umbraco表单样式的功能?这里有一个开源的替代方案:@JannikAnker我希望它能这么简单。在这个项目中,我们有更具体的要求,不幸的是,Umbraco表单不支持这些要求。我希望他们这样做,但由于这一点,我们无法使用它…我希望我们可以。为了防止它可能有用,Formulate现在处于活动状态:有点过时,但您是否碰巧尝试重新创建Umbraco表单样式的功能?这里有一个开源的替代方案:@JannikAnker我希望它能这么简单。在这个项目中,我们有更具体的要求,不幸的是,Umbraco表单不支持这些要求。我希望他们这样做,但由于这一点,我们不能使用它…我希望我们可以。只是为了以防万一,它现在是活的:我同意这似乎是个问题;但是,当我查看SetValue方法的方法签名时,它是(string,object)。显然,该方法正在调用另一个具有签名(string,string)的方法。我的怀疑是,我需要将NestedContent数据序列化为JSON字符串,但我希望有人以前遇到过这一点,并有更好的提示。您可以查看Umbraco源代码(在Github上)以确认您的怀疑?我会尝试减少字段,看看哪些字段失败。目前只添加一个字段:
    newFormField.SetValue(“fieldName”,formField.Name)
    我们需要知道哪个属性失败(Name?Type?Manditory?Value?)
    SetPropertyValue
    函数调用
    SetValueOnProperty(propertyTypeAlias,Value)函数。正如@JannikAnker所指出的,您可以在这里看到代码:我同意这似乎是问题所在;但是,当我查看SetValue方法的方法签名时,它是(string,object)。显然,该方法正在调用另一个具有签名(string,string)的方法。我的怀疑是,我需要将NestedContent数据序列化为JSON字符串,但我希望有人以前遇到过这一点,并有更好的提示。您可以查看Umbraco源代码(在Github上)以确认您的怀疑?我会尝试减少字段,看看哪些字段失败。目前只添加一个字段:
    newFormField.SetValue(“fieldName”,formField.Name)
    我们需要知道哪个属性失败(Name?Type?Manditory?Value?)
    SetPropertyValue
    函数调用
    SetValueOnProperty(propertyTypeAlias,Value)函数。正如@JannikAnker所指出的,你可以在这里看到代码:这确实帮了我不少忙@robert foster。谢谢很高兴为您服务:)这确实帮了我不少忙@robert foster。谢谢很高兴为您服务:)