通过控制器操作将Orchard形状添加到特定区域

时间:2015-06-05 15:39:30

标签: c# controller orchardcms zone

我很难在自定义主题中为特定区域添加形状。 我想要实现的是,

  • 添加了在主页网址上触发的控制器操作。 'Themed'属性被分配给控制器动作。
  • 在此控制器操作中,我使用IWorkContextAccessor添加了一个形状,并指定了我想要渲染形状的区域。

问题/挑战:

  • 如果我的控制器操作返回类型为'void',则不会呈现任何内容。
  • 将控制器操作返回类型更改为“ActionResult”,形状将在所需区域中呈现,但与控制器操作关联的视图也会呈现。作为一种解决方法,我必须为我的控制器操作声明一个空视图(这似乎是一个开销)。

这是我的控制器操作代码。

返回类型为ActionResult的代码

    [Themed]
    public ActionResult HomePageSideZone()
    {

        string test = "This is text.";
        _workContextAccessor.GetContext()
            .Layout
            .Zones["column2_tab4"]
            .Add(_shapeFactory.MyShape(Text: test));
        return View("CargillHomePageSizeZone", _shapeFactory.CargillHomePageSizeZone(Text: test));



    }

返回类型为Void的代码

    [Themed]
    public void HomePageSideZone()
    {

        string test = "This is text.";
        _workContextAccessor.GetContext()
            .Layout
            .Zones["column2_tab4"]
            .Add(_shapeFactory.MyShape(Text: test));




    }

我不打算使用'Placement'文件,因为我想使用代码来实现此功能。

0 个答案:

没有答案