Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orchardcms Orchard CMS 1.4.2-我的自定义内容类型的编辑视图不';不显示内容部件数据 设置:_Orchardcms - Fatal编程技术网

Orchardcms Orchard CMS 1.4.2-我的自定义内容类型的编辑视图不';不显示内容部件数据 设置:

Orchardcms Orchard CMS 1.4.2-我的自定义内容类型的编辑视图不';不显示内容部件数据 设置:,orchardcms,Orchardcms,我正在创建一个模块,以便我的客户可以将自己的公司电子邮件作为内容进行管理 这样做是为了避免将人们的真实电子邮件地址放在公共网站上,因此对于网站用户发送电子邮件,我让Orchard显示一个表单。没问题。我的问题(见下文)与Orchard如何在仪表板中显示内容项目有关,而不是与网站面向公众的部分有关 继续: 我创建了一个名为EmailAddress的内容类型(请参见下面的migration.cs)。它基本上只是一个围绕名为CorporateMailPart的内容部分的内容类型包装器 我设置的另一个相

我正在创建一个模块,以便我的客户可以将自己的公司电子邮件作为内容进行管理

这样做是为了避免将人们的真实电子邮件地址放在公共网站上,因此对于网站用户发送电子邮件,我让Orchard显示一个表单。没问题。我的问题(见下文)与Orchard如何在仪表板中显示内容项目有关,而不是与网站面向公众的部分有关

继续:

我创建了一个名为EmailAddress的内容类型(请参见下面的migration.cs)。它基本上只是一个围绕名为CorporateMailPart的内容部分的内容类型包装器

我设置的另一个相关部分是驱动程序(请参阅下面的CorporateEmailPartDriver.cs)。我在PluralSight.com上关注了Kevin Kuebler的视频,编写了《司机》。调试表明它工作正常

使用“我的模块”中的Placement.info文件放置形状

所以,如果不是因为

问题是: 驱动程序正确地允许我为我的内容类型的编辑器创建形状,显示良好

或者更确切地说,显示良好,允许我创建一个新的电子邮件地址。我可以将CorporateMailPart保存到数据库中

但是,当我保存新的EmailAddress内容类型或尝试编辑现有内容类型时,CorporateEmailPart的字段根本不会显示在我的EmailAddress编辑器上

在我的POST DriverResult Editor方法中,当我返回GET Editor ContentShape时,只显示我的内容类型的公共部分(即ContentItem的所有者字段)。不显示CorporateMailPart数据。甚至没有空的文本框

我一定错过了一些简单的东西,因为其他的一切都很好

但我就是看不到什么

代码: Migrations.cs:
使用Orchard.ContentManagement.MetaData;
使用Orchard.Core.Contents.Extensions;
使用果园数据;
使用Orchard.Data.Migration;
使用翼展、社团邮件、模型;
命名空间Wingspan.CorporateEmails{
公共类迁移:DataMigrationImpl{
公共int创建(){
ContentDefinitionManager.AlterTypeDefinition(“EmailAddress”,builder=>
建设者
.带部分(“公共部分”)
.createable());
SchemaBuilder.CreateTable(“CorporateMailPartRecord”,表=>
表.ContentPartRecord()
.列(“别名”)
.栏(“电子邮件地址”)
.列(“显示顺序”)
.列(“显示标题”)
。列(“IsDefault”);
ContentDefinitionManager.AlterPartDefinition(typeof(CorporateEmailPart).Name,p=>p.Attachable());
ContentDefinitionManager.AlterTypeDefinition(“EmailAddress”,builder=>
建设者
.WithPart(typeof(CorporateEmailPart).Name));
SchemaBuilder.CreateTable(“EmailMessageRecord”,table=>
桌子
.Column(“Id”,col=>col.PrimaryKey().Identity())
.列(“CorporateMailPartRecord\u Id”)
.栏(“发件人”)
.栏(“收件人”)
.栏目(“主题”)
.栏(“正文”)
.列(“标题名称”)
.栏(“地址”)
.栏目(“电话”);
返回1;
}
}
}
CorporateEmailDriver.cs
使用System.Collections.Generic;
使用System.Web.Routing;
利用果园;
采用果园管理;
使用Orchard.ContentManagement.Drivers;
使用果园数据;
使用果园服务;
使用翼展、社团邮件、模型;
使用Wingspan.CorporateEmails.ViewModels;
使用System.Linq;
命名空间Wingspan.CorporateEmails.Drivers{
公共类CorporateMailPartDriver:ContentPartDriver{
私人只读电子邮箱;
私有只读IEnumerable\u HTMLFilter;
私有只读RequestContext\u RequestContext;
private const string TemplateName=“Parts/CorporateEmail”;
受保护重写字符串前缀
{
得到
{
{返回“公司邮件”;}
}
}
公共IOrchardServices服务{get;set;}
public CorporateMailPartDriver(IRepository repositoryEmailMessage)
{
_repositoryEmailMessage=repositoryEmailMessage;
}
public CorporateMailPartDriver(IOrchardServices服务、IEnumerable HTMLFilter、RequestContext请求上下文){
_htmlFilters=htmlFilters;
服务=服务;
_requestContext=requestContext;
}
受保护的重写驱动程序结果显示(CorporateMailPart部件、字符串显示类型、动态形状帮助)
{
返回ContentShape(TemplateName,()=>shapeHelper.Parts\u CorporateEmail(CorporateEmailPart:part));
}
//得到
受保护的重写驱动程序结果编辑器(CorporateMailPart零件,动态形状帮助器)
{
var模型=BuildEditorViewModel(部分);
返回ContentShape(“Parts\u CorporateEmail\u Edit”,()=>
EditorTemplate(TemplateName:TemplateName,Model:Model,Prefix:Prefix));
}
//职位
受保护的重写驱动程序结果编辑器(CorporateMailPart部件、IUpdateModel更新程序、动态shapeHelper)
{
TryUpdateModel(部分,前缀,null,null);
var模型=BuildEditorViewModel(部分);
返回ContentShape(“Parts\u CorporateEmail\u Edit”,
()=>shapeHelper.EditorTemplate(TemplateName:TemplateName,Model:Model,Prefix:Prefix));
}
#地区私人公用事业
私人CorporateMailEditorViewModel BuildEditorViewModel(CorporateMailPart部分)
{
返回新公司MailEditorVie
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Contents.Extensions;
using Orchard.Data;
using Orchard.Data.Migration;
using Wingspan.CorporateEmails.Models;

namespace Wingspan.CorporateEmails {
    public class Migrations : DataMigrationImpl {

        public int Create() {
            ContentDefinitionManager.AlterTypeDefinition("EmailAddress", builder =>
                builder
                .WithPart("CommonPart")
                .Creatable());

            SchemaBuilder.CreateTable("CorporateEmailPartRecord", table =>
                table.ContentPartRecord()
                .Column<string>("Alias")
                .Column<string>("EmailAddress")
                .Column<int>("DisplayOrder")
                .Column<string>("DisplayTitle")
                .Column<bool>("IsDefault"));

            ContentDefinitionManager.AlterPartDefinition(typeof(CorporateEmailPart).Name, p => p.Attachable());

            ContentDefinitionManager.AlterTypeDefinition("EmailAddress", builder =>
                builder
                .WithPart(typeof(CorporateEmailPart).Name));

            SchemaBuilder.CreateTable("EmailMessageRecord", table =>
                table
                .Column<int>("Id", col => col.PrimaryKey().Identity())
                .Column<int>("CorporateEmailPartRecord_Id")
                .Column<string>("Sender")
                .Column<string>("Recipient")
                .Column<string>("Subject")
                .Column<string>("Body")
                .Column<string>("TitleAndName")
                .Column<string>("Address")
                .Column<string>("Telephones"));

            return 1;
        }
    }
}
using System.Collections.Generic;
using System.Web.Routing;
using Orchard;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Data;
using Orchard.Services;
using Wingspan.CorporateEmails.Models;
using Wingspan.CorporateEmails.ViewModels;
using System.Linq;


namespace Wingspan.CorporateEmails.Drivers {
    public class CorporateEmailPartDriver : ContentPartDriver<CorporateEmailPart>{
        private readonly IRepository<EmailMessageRecord> _repositoryEmailMessage;
        private readonly IEnumerable<IHtmlFilter> _htmlFilters;
        private readonly RequestContext _requestContext;

        private const string TemplateName = "Parts/CorporateEmail";
        protected override string Prefix
        {
            get
            {
                { return "CorporateEmail"; }
            }
        }

        public IOrchardServices Services { get; set; }

        public CorporateEmailPartDriver(IRepository<EmailMessageRecord> repositoryEmailMessage)
        {
            _repositoryEmailMessage = repositoryEmailMessage;
        }

        public CorporateEmailPartDriver(IOrchardServices services, IEnumerable<IHtmlFilter> htmlFilters, RequestContext requestContext) {
            _htmlFilters = htmlFilters;
            Services = services;
            _requestContext = requestContext;
        }

        protected override DriverResult Display(CorporateEmailPart part, string displayType, dynamic shapeHelper)
        {
            return ContentShape(TemplateName, () => shapeHelper.Parts_CorporateEmail(CorporateEmailPart: part));
        }

        //GET
        protected override DriverResult Editor(CorporateEmailPart part, dynamic shapeHelper)
        {
            var model = BuildEditorViewModel(part);
            return ContentShape("Parts_CorporateEmail_Edit", () =>
                shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix));
        }

        //POST
        protected override DriverResult Editor(CorporateEmailPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            updater.TryUpdateModel(part, Prefix, null, null);
            var model = BuildEditorViewModel(part);
            return ContentShape("Parts_CorporateEmail_Edit",
                                () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix));
        }

        #region Private Utilities

        private CorporateEmailEditorViewModel BuildEditorViewModel(CorporateEmailPart part)
        {
            return new CorporateEmailEditorViewModel
            {
                Alias = part.Alias,
                EmailAddress = part.EmailAddress,
                DisplayOrder = part.DisplayOrder,
                DisplayTitle = part.DisplayTitle,
                IsDefault = part.IsDefault,
                EmailMessageSummaries = part.EmailMessages.Select(ue => ue.Summary).ToList()
            };
        }

        #endregion
    }
}
private CorporateEmailEditorViewModel BuildEditorViewModel(CorporateEmailPart part)
        {
            return new CorporateEmailEditorViewModel
            {
                Alias = part.Alias,
                EmailAddress = part.EmailAddress,
                DisplayOrder = part.DisplayOrder,
                DisplayTitle = part.DisplayTitle,
                IsDefault = part.IsDefault,
                EmailMessageSummaries = part.EmailMessages.Select(ue => ue.Summary).ToList()
            };
        }
EmailMessageSummaries = part.EmailMessages.Select(ue => ue.Summary).ToList()