Asp.net mvc 3 从自定义数据源在ContentHandler中填充ContentPart

Asp.net mvc 3 从自定义数据源在ContentHandler中填充ContentPart,asp.net-mvc-3,content-management-system,orchardcms,Asp.net Mvc 3,Content Management System,Orchardcms,我们有一个使用RavenDB的现有应用程序,希望创建一个定制的Orchard管理模块,可以将数据读写到Raven中,以便我们能够管理数据。理想情况下,该实现将允许我们使用ContentParts,以便创建可重用的“模块” 有几个参考文献提到通过在ContentHandler中加载数据来访问Web服务中的数据,但我还没有找到一个实现。我已经能够使用控制器/视图读取/写入数据,但这似乎更具限制性 此外,我们需要管理的属性之一是图像。我们想利用媒体选择器字段在我们的管理界面中选择图像。只要我们可以

我们有一个使用RavenDB的现有应用程序,希望创建一个定制的Orchard管理模块,可以将数据读写到Raven中,以便我们能够管理数据。理想情况下,该实现将允许我们使用ContentParts,以便创建可重用的“模块”

有几个参考文献提到通过在ContentHandler中加载数据来访问Web服务中的数据,但我还没有找到一个实现。我已经能够使用控制器/视图读取/写入数据,但这似乎更具限制性

此外,我们需要管理的属性之一是图像。我们想利用媒体选择器字段在我们的管理界面中选择图像。只要我们可以通过浏览器访问图像,就可以将物理图像存储在Orchard中

有人能给我指出正确的方向吗


谢谢

如果您使用的是Orchard内容项,
Id
已经存在-无需存储新的内容项。您需要使用一些标识符来绑定Orchard和后端存储,否则您必须重新实现整个Orchard数据层(这是一个过度的操作)

你只需要:

  • 创建从
    ContentPart
    派生的部件(而不是
    ContentPart
    ,因为您不希望将其存储在Orchard数据库中)。那么
  • 为您的部件添加一个处理程序,连接到适当的生存期事件(如
    onload
    ),并从后端加载给定内容项id和部件类型组合的数据
  • 为您的部件添加一个驱动程序(像往常一样),并将数据存储逻辑放入
    编辑器
    方法中

通过这种方式,您将拥有一个存储在Orchard数据库中没有任何数据的部件,该部件完全从外部源加载。

如果您使用的是Orchard内容项,则
Id
已经存在-无需存储新的。您需要使用一些标识符来绑定Orchard和后端存储,否则您必须重新实现整个Orchard数据层(这是一个过度的操作)

你只需要:

  • 创建从
    ContentPart
    派生的部件(而不是
    ContentPart
    ,因为您不希望将其存储在Orchard数据库中)。那么
  • 为您的部件添加一个处理程序,连接到适当的生存期事件(如
    onload
    ),并从后端加载给定内容项id和部件类型组合的数据
  • 为您的部件添加一个驱动程序(像往常一样),并将数据存储逻辑放入
    编辑器
    方法中
通过这种方式,您将拥有一个存储在Orchard数据库中没有任何数据的部件,完全从外部源加载。

如果您希望能够使用Orchard部件(注释、评级等)丰富外部数据,您应该构建一个部件,就像Piotr解释的那样。这意味着以某种方式为所有远程对象创建内容项,这将带来它自己的挑战(这意味着同步不同的数据源,这从来都不是一件有趣的事情)

如果您不需要这样做,那么您应该构建控制器操作(可能还有小部件)来显示数据。即使你这样做了,你仍然可以从许多Orchard项目中受益,比如主题化。

如果你想用Orchard部分(评论、评级等)丰富外部数据,你应该构建一个部分,就像Piotr解释的那样。这意味着以某种方式为所有远程对象创建内容项,这将带来它自己的挑战(这意味着同步不同的数据源,这从来都不是一件有趣的事情)


如果您不需要这样做,那么您应该构建控制器操作(可能还有小部件)来显示数据。即使你这样做了,你仍然可以从许多Orchard的事情中受益,比如主题化。

如果我错了,请纠正我,但是为了在ContentHandler中填充ContentPart(请参阅@piotr szmyd的帖子),你需要在Orchard中存储某种ID。否则,您将使用什么从Web服务查找数据?这正是我试图避免的,因为我们不想通过Orchard存储查找ID,所以导致我不断重复。我想我可以设法进入,但我将尝试为Raven实现IRepository。如果我错了,请纠正我,但为了在ContentHandler中填充ContentPart(请参阅@piotr szmyd的帖子),您需要在Orchard中存储某种ID。否则,您将使用什么从Web服务查找数据?这正是我试图避免的,因为我们不想通过Orchard存储查找ID,所以导致我不断重复。我原以为我可以在里面混过去,但我要尝试为Raven实现IRepository。