1

我对 Orchard(和 ASP.NET MVC)非常陌生,我很难理解如何在控制器中自动设置 Orchard 部件属性。我有一个“画廊”内容类型,由股票标题、容器和所有者部分组成。我正在使用 Create 方法创建一个控制器,该方法隐藏了 Container 部分的所有详细信息,因为我将在 Create 方法的 HttpPost 版本中设置默认页面长度、项目类型等。我的问题是我不知道如何在 http Post 上设置这些值。

我的总体计划如下:

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

我是否在错误的抽象级别上看待这个?如何为我的图库内容类型制作简化的编辑器?

4

1 回答 1

1

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

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

有关如何通过代码管理内容项的完整示例,请参阅培训演示模块

于 2013-06-27T11:36:36.957 回答