首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据导入SiteFinity

将数据导入SiteFinity
EN

Stack Overflow用户
提问于 2020-02-20 17:59:55
回答 2查看 195关注 0票数 1

对SiteFinity来说非常新。如何将现有DB (例如CSV或excel格式)导入到siteFinity中以在SF页面上进行交互?我想做一个数据集作为产品,也许另一个只是作为一个自定义的内容类型。但是如何导入已经存在的数据呢?我应该用.Net还是.?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-20 18:16:48

我会创建一个ServiceStack服务(随站点有限)来公开该csv数据,然后在任何地方使用它作为Json。如果目的是继续更新CSV作为主要数据源?我不确定这里的用法,您是否有一个外部系统可以转储到这个文件或其他什么?

如果不是这样的话,您应该使用ModuleBuilder (/ Sitefinity /Administration/Module-builder)在Sitefinity中创建数据类型,然后运行一个脚本导入数据(您成功了,MB提供了基于您的结构的示例导入代码)。

现在您有了更好的数据输入,并且通过使用的API\OData端点(更不用说所有的小部件都是自动生成的)正确地公开了它。

票数 4
EN

Stack Overflow用户

发布于 2020-02-26 04:45:41

首先,您需要创建动态模块,包括项目的数据字段。然后,您可以使用.net来创建api或sthing来导入CSV。

使用带有No和Title字段的产品数据的示例代码。

代码语言:javascript
复制
//read data from CSV
var attachedFile = System.Web.HttpContext.Current.Request.Files["CsvDoc"];
if (attachedFile == null || attachedFile.ContentLength <= 0) return Request.CreateResponse(HttpStatusCode.NoContent, "No data");
var csvReader = new StreamReader(attachedFile.InputStream);
string inputDataRead;
var values = new List<string>();
while ((inputDataRead = csvReader.ReadLine()) != null)
{
    //values.Add(inputDataRead.Trim().Replace(" ", "").Replace(",", " "));
    values.Add(inputDataRead);
}
values.Remove(values[0]);

//import to CMS                
var dynamicModuleManager = DynamicModuleManager.GetManager();
var contentType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.Product.Product");

foreach (var value in values)
{
      var eachValue = value.Split(',');
      if (!string.IsNullOrEmpty(eachValue[0]))
      {
           using (new ElevatedModeRegion(dynamicModuleManager))
           {
                 var newcontent = dynamicModuleManager.CreateDataItem(contentType);
                 newcontent.SetValue("No", eachValue[0] != "" ? eachValue[0] : string.Empty);
                 newcontent.SetValue("Title", eachValue[1] != "" ? eachValue[1] : string.Empty);
                 newcontent.UrlName = Regex.Replace(eachValue[1].ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");;
                 newcontent.Author = "ImportCSV";
                 newcontent.SetWorkflowStatus(dynamicModuleManager.Provider.ApplicationName, "Published");
                 dynamicModuleManager.SaveChanges();                                
            }
      }
}

CSV文件如下:

不,头衔

1,Product1

2,Product2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60326007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档