"Add new user" 页面如何加载

How does the "Add new user" page loads

我想知道 Orchard "Add user" 页面是如何加载的。我对MVC有一点了解。这些是加载到页面中的部分:

添加用户主页:

..\Orchard.Web\Modules\Orchard.Users\Views\Admin\Create.cshtml

创建用户部分: ..\果园.Web\Modules\Orchard.Users\Views\EditorTemplates\Parts\User.Create.cshtml

角色部分: ..\果园.Web\Modules\Orchard.Roles\Views\EditorTemplates\Parts\Roles.UserRoles.cshtml

保存按钮: ..\果园.Web\Core\Contents\Views\Content.SaveButton.cshtml

我的问题是如何将这些单独的部分合并到一个页面中?哪个 class 负责这样做?

这些独立的部分由负责的 Drivers 结合在一起。这些驱动程序负责渲染该部分附带的形状。例如,SaveButton 在 Orchard 的 ContentsDriver 中呈现。Core/Contents/Drivers/ContentsDriver:

protected override DriverResult Editor(ContentPart part, dynamic shapeHelper) {
    var results = new List<DriverResult> { ContentShape("Content_SaveButton", saveButton => saveButton) };

    if (part.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable)
        results.Add(ContentShape("Content_PublishButton", publishButton => publishButton));

    return Combined(results.ToArray());
}

虽然车手负责形状的渲染,但车手开球的调节是通过placement.info完成的(参见Orchard.Core/Contents/Placement.info):

<Placement>
    <Place Content_SaveButton="Sidebar:23"/>
</Placement>

如果某处(在模块或主题中)定义了不应显示保存按钮,则可能会通过 placement.info 完成。您可能需要搜索某个地方,上面写着这样的话:

<Placement>
    <!-- This will cause the savebutton not to render -->
    <Place Content_SaveButton="-"/>
</Placement>

或者,因为它说它应该在 SideBar 区域中呈现保存按钮,所以可能是使用的某些替代方法不显示 SideBar 区域 (@Display(Model.SideBar))