在果园控制器中自动填充零件值

时间:2013-06-27 03:11:14

标签: orchardcms orchardcms-1.6

我是Orchard(和ASP.NET MVC)的新手,我很难解决Orchard零件属性如何在控制器中自动设置的问题。我有一个“图库”内容类型,包括库存标题,容器和所有者部分。我正在创建一个带有Create方法的控制器,该方法隐藏了Container部分的所有细节,因为我将在Create方法的HttpPost版本中设置默认页面长度,项目类型等等。我的问题是我不知道如何在http Post上设置这些值。

我的总体计划如下:

我创建了一个包含标题和管理员用户名的CreateGalleryViewModel,两者都是一个字符串。在视图中,这两个表示为表单字段。在提交时,我可以在控制器中运行TryUpdateModel,以使用表单值更新CreateGalleryViewModel。但是,我如何更新Part属性?我想我应该运行IContentManager.UpdateEditor(,这个),但我认为这不起作用,因为我从来没有运行过IContentManager.BuildEditor。这是我被困的地方,因为我没有看到内容部分如何得到正确验证和更新。

我是否在错误的抽象层面上看待这个?如何为Gallery内容类型创建简化的编辑器?

1 个答案:

答案 0 :(得分:1)

您基本上需要了解的内容如下:

  • 您可以使用IContentManager.BuildEditor()
  • 构建内容项的编辑器
  • 您可以使用IContentManager.UpdateEditor()
  • 从POST数据更新项目的部分值
  • 您还可以通过使用As()方法“转换”内容项来访问部件(需要Orchard.ContentManagement命名空间)。
  • 当您处理内容项时,由于它们的动态特性,创建视图模型很少是一种很好的方法,您可以在其中重新创建某些部分的属性。如果您拥有内容项中包含的静态视图模型,那么您将会错过Orchard内容模型带来的可扩展性和灵活性。例如。如果您为该内容类型添加新部件,因为您使用的是静态视图模型,则不会处理新部件。

有关如何从代码管理内容项的完整示例,请参阅Training Demo module