0

我正在处理这个模块(扩展注册)。此模块提供了一种在注册中显示自定义用户字段的简单方法。覆盖 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);

注册.cshtml

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

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

它工作得很好,但我需要从注册表单中隐藏一些字段。

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

提前致谢。

4

1 回答 1

0

据我了解,这里的问题是如何通常隐藏表单中的某些字段。

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

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

顺便说一句,我认为 ContentManager.New() 永远不会返回 null。即使内容类型不是静态定义的(即从迁移或通过 ContentDefinitionManager 创建),它也会返回一个内容项。

于 2012-08-14T09:22:32.933 回答