DriverResult Editor在Orchard中呈现自定义模板

时间:2012-08-13 20:21:46

标签: asp.net-mvc c#-4.0 orchardcms

我正在研究这个模块(Extended Registration)。此模块提供了一种在注册中显示自定义用户字段的简单方法。 覆盖AccountController表单用户并在注册模板中加载编辑器模板

的AccountController

        var shape = _orchardServices.New.Register();

        var user = _orchardServices.ContentManager.New("User");
        if (user != null) {
            shape.UserProfile= _contentManager.BuildEditor(user);
        }

        return new ShapeResult(this, shape);

Register.cshtml

    </div>
    @if (Model.OERegister != null) {
        <fieldset>
            @Display(Model.UserProfile)
        </fieldset>
    }
    <div>

这里的形状是编辑模板(EditorTemplate / Parts / template)

它工作正常,但我需要在注册表中隐藏一些字段。

我有点迷失在这里,我想以最多的方式去做。

提前致谢。

1 个答案:

答案 0 :(得分:0)

据我所知,这里的问题是如何隐藏表格中的某些字段。

根据表单代码的作者如何设计它或者您是否是开发人员,有多种方式:

  • 将表单的某些部分放在不同的形状中,并将它们的工厂返回到驱动程序的Combined驱动结果中。这意味着,您的驱动程序通过为零件编辑器提供形状来构建表单的一部分将注册多个形状(这类似于BodyPartDriver.Display()所做的:它返回三个单独的形状注册)。现在这些可以通过展示位置单独控制,因此您也可以隐藏它们。
  • 如果您对表单的构建方式没有如此精细的控制,您仍然可以覆盖包含要隐藏的字段的形状模板。然后在覆盖中,您可以自由地自定义表单的外观。请注意,与第一个解决方案不同,这不会自动阻止用户将隐藏字段的数据发布到服务器,从而将其保存。

BTW我不认为ContentManager.New()可以返回null。即使内容类型没有静态定义(即从迁移或通过ContentDefinitionManager创建),它也将返回一个内容项。