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



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

我的总体计划如下:

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

我是不是在错误的抽象层次上看待这个问题?如何为我的Gallery内容类型制作一个简化的编辑器?

这里基本上需要知道的是:

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

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

最新更新