【问题标题】:Orchard Custom User Part is not stored in DatabaseOrchard 自定义用户部分未存储在数据库中
【发布时间】:2012-07-01 01:19:11
【问题描述】:

我似乎无法将其他数据存储在附加到用户的单独内容部分中。我做了以下事情:

  • 创建了一个模块
  • 在模块中,我为 ProfilePart 和 ProfilePartRecord 创建了一个模型
  • 在迁移过程中,我为 ProfilePartRecord 创建了一个表(来自 ContentPartRecord 类型)
  • 在迁移中,我通过设置 WithPart ProfilePart 更改了 User 的类型定义
  • 我创建了一个驱动类,它有 2 种编辑方法,一种用于获取,一种用于发布(代码 sn-ps 如下
  • 我还创建了一个处理程序,它为 ProfilePartRecord 类型的 profilePartRepository 添加存储过滤器

模块结构

  • 驱动程序/ProfilePartDriver.cs
  • 处理程序/ProfileHandler.cs
  • 模型/ProfilePart.cs
  • 模型/ProfilePartRecord.cs
  • 视图/EditorTemplates/Parts/profile.cshtml
  • Migrations.cs
  • Placement.info

因为我认为问题出在驱动程序上。这是我的代码:

是否因为部件附加到用户而出错?还是我错过了其他东西。

公共类 ProfilePartDriver:ContentPartDriver {

protected override string Prefix
{
    get { return "Profile"; }
}

//GET
protected override DriverResult Editor(ProfilePart part, dynamic shapeHelper)
{
    return ContentShape("Parts_Profile_Edit", () => 
                    shapeHelper.EditorTemplate(TemplateName: "Parts/Profile", Model: part, Prefix: Prefix));
}

//POST
protected override DriverResult Editor(ProfilePart part, IUpdateModel updater, dynamic shapeHelper)
{
    updater.TryUpdateModel(part, Prefix, null, null);
    return Editor(part, shapeHelper);
}

}

【问题讨论】:

  • 我会看看现有的配置文件模块之一,看看他们是如何做到的。

标签: orchardcms


【解决方案1】:

我用过Skywalker's blog。有一章是关于使用用户注册客户并向其中添加您自己的内容部分。对我很好。

【讨论】:

  • 欣赏这是旧的,但信息链接已死。
  • 我在谷歌上搜索了这个名字,找到了新的链接:here
【解决方案2】:

首先 - 当您转到仪表板并编辑给定用户时,您的 ProfilePart 编辑器是否会显示?我注意到您使用Parts_Profile_Edit 作为形状键,但实际上使用EditorTemplates/Parts/Profile.cshtml 作为模板。这是完全正确的,但请注意 Placement.info 文件使用形状键,因此您必须在其中使用 Parts_Profile_Edit 作为形状名称。否则不会显示。

第二个 - 您是否尝试过调试以查看是否调用了第二个驱动程序 Editor 方法(用于处理 POST 的方法)?

就像 Bertrand 建议的那样,我会研究其中一个可用的现有模块(afaik 有一个用于库中的用户配置文件)并查看差异。它可能很小,例如。一个错字。

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 2017-02-07
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2018-04-02
    相关资源
    最近更新 更多