2012-12-08 96 views
5

我有定制代码读取一堆xml文档,并创建一个自定义数据导入配方,我使用乌节中的导入/导出模块上传。导入的文档是使用Orchard管理界面创建的内容类型“Api文档”。现在,我想提出一个自定义的果园模块的这个配方文件生成代码的一部分(如果这是正确的做法,我不知道),并让管理员用户执行以下操作:Orchard CMS自定义数据导入器

  1. 使用的一种形式在管理控制台部分上传需要通过配方文件生成器运行的XML文档

  2. 这表单提交配方文件的导入/导出模块,以便它可以执行其导入过程照常

什么是最好的处理这个问题的方法?我甚至不确定创建自定义模块是否正确。如果还有其他可扩展性选项我应该利用,那将是很好的了解。

回答

3

IImportExportService接口有一个名为Import成员:

void Import(string recipeText); 

一旦你生成你的食谱,你可以调用这个方法,它会执行配方和更新的外壳。

如果您只是导入数据,那么如果我没有弄错,您可以在不更新shell的情况下离开(如果启用或禁用了功能,您只需要这样做) - 在这种情况下,您可以制作几个调用到IRecipeParserIRecipeManager接口来代替:

var recipe = _recipeParser.ParseRecipe(recipeText); 
_recipeManager.Execute(recipe); 

我已经写了类似的东西,做一些进口/出口,所以你可以移动的网站之间的内容块;它也做了一些加密,以便隐藏细节以防窥视。开始的好地方是阅读ImportExportService的源代码,因为它并不复杂。

+0

感谢您的提示。这是一个非常有用的信息。你有看法食谱生成代码是否应该成为一个模块或其他东西?我假设我会创建一个配方生成器模块并为该模块创建一个管理员表单,以便我可以使用该表单上载xml文件。这是正确的方法吗?我对此很感兴趣,希望能提供一些概念指导。 – user1888320

+0

是的,这听起来完全合理。如果您是Orchard的新手,请参阅http://patrickyong.net/2010/07/25/hello-orchard-part-2/,以获取设置管理控制器的一些示例代码(这有点旧了,因此请检查注释) 。处理文件上传与任何其他ASP MVC项目相同,有一个很好的教程在http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx。 – mdm

+0

我会尽力实现你的建议并报告我发现的内容。非常感谢! – user1888320