Orchardcms 如何从Orchard中的命令行在小部件上设置ContentPartRecord的值?

Orchardcms 如何从Orchard中的命令行在小部件上设置ContentPartRecord的值?,orchardcms,Orchardcms,我已经在Orchard CMS中创建了一个自定义模块。这个模块包含几个小部件。其中一个小部件我们称之为WinnerFeedWidget,它包含两个自定义Contant部分记录,我们称它们为NumberOfWinnersToShow和SkinName 我可以使用以下命令将WinnerFeedWidget添加到区域 widget create WinnersFeedWidget /Title:"Recent Winners" /Zone:"AsideSecond" /Position:"2" /La

我已经在Orchard CMS中创建了一个自定义模块。这个模块包含几个小部件。其中一个小部件我们称之为WinnerFeedWidget,它包含两个自定义Contant部分记录,我们称它们为NumberOfWinnersToShow和SkinName

我可以使用以下命令将WinnerFeedWidget添加到区域

widget create WinnersFeedWidget /Title:"Recent Winners" /Zone:"AsideSecond" /Position:"2" /Layer:"Default" /Identity:"WinnersContainerWidget" /RenderTitle:true
但是我也希望能够从命令行设置NumberOfWinnersToShow和SkinName的值


我怎样才能做到这一点呢?

为了所有想知道这个问题答案的人-

因为我正在创建一个配方,所以我能够通过将以下XML添加到配方的元素中来实现相同的效果:

<WinnersFeedWidget Id="/Identifier=WinnersFeed" Status="Published">
  <WinnersFeedPart NumberOfWinnersToShow="15" SkinName="Blue"/>
  <CommonPart Owner="/User.UserName=OrchardAdmin" Container="/Layer.LayerName=Default" CreatedUtc="2012-11-20T17:08:00Z" PublishedUtc="2012-11-20T17:08:00Z" ModifiedUtc="2012-11-20T17:08:00Z" />
  <WidgetPart Title="Recent Winners" Position="2" Zone="AsideSecond" RenderTitle="true" />
</WinnersFeedWidget>
GetIntegerValue是一个助手方法,用于将导入程序提供的值转换为int


作为一个很好的例子,我建议您从Gallery下载特色项目滑块模块,并查看它们的驱动程序类。

您可能需要编写自己的命令。谢谢Bertrand。我确实考虑过为此扩展Orchard命令行工具,但想知道是否有一个我忽略的现成解决方案。
    protected override void Exporting(WinnersFeedPart part, ExportContentContext context)
    {
        context.Element(part.PartDefinition.Name).SetAttributeValue("NumberOfWinnersToShow", part.NumberOfWinnersToShow);
        context.Element(part.PartDefinition.Name).SetAttributeValue("SkinName", part.SkinName);
    }

    protected override void Importing(WinnersFeedPart part, ImportContentContext context)
    {
        part.NumberOfWinnersToShow= GetIntegerValue(part, context, "NumberOfWinnersToShow");
        part.SkinName= context.Attribute(part.PartDefinition.Name, "SkinName");
    }