Orchard CMS:BodyPart中的空值

时间:2014-10-22 13:31:22

标签: orchardcms orchardcms-1.8

我正在为Orchard CMS开发自定义新闻模块。我的NewsItem由以下几部分组成:TitlePartCommonPartBodyPart和我的自定义NewsPart

当我尝试创建并保存项目时,BodyPart变为空(其他部分保存正确),并且DB中有NULL值。如果我在Text表中更改Common_BodyPartRecord列值,然后在编辑模式下打开项目,则编辑器为空,不会加载任何值。

以下是NewsItem的{​​{1}}的定义:

migrations.cs

我试图调试 ContentDefinitionManager.AlterTypeDefinition("NewsItem", t => t .WithPart("NewsPart") .WithPart("CommonPart", p => p.WithSetting("DateEditorSettings.ShowDateEditor", "true")) .WithPart("TitlePart") .WithPart("BodyPart") .Draftable() ); 类。当我在管理界面中加载新闻项目编辑器时,BodyPartDriver方法输入了Editor()参数。这是附加到BodyPart part BodyPart的实例。这里NewsItem是空字符串。但是part.Text正如我在DB表中直接设置的那样。

我无法理解这里有什么问题。其他部分如part.base.Record.Text = "Test"或我的TitlePart工作正常。我的模块中没有此NewsPart的自定义代码。似乎我错过了什么,但到底是什么?

另外。 Orchard Error日志中有一个例外:

BodyPart

PS:我已将2014-10-22 17:25:15,307 [19] Orchard.ContentManagement.Drivers.Coordinators.ContentPartDriverCoordinator - Default - HttpRequestValidationException thrown from IContentPartDriver by Orchard.Core.Common.Drivers.BodyPartDriver http://localhost:30321/OrchardLocal/Admin/News/Edit/56 System.Web.HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (Body.Text="<p>123123123</p>"). 属性添加到我的[ValidateInput(false)]类,默认为NewsAdminController。现在Orchard.Core.Contents.Controllers.AdminController正确保存。但在我看来,这不是正确的方式。

1 个答案:

答案 0 :(得分:0)

永远不要直接修改数据库表或记录。改为浏览部件的属性。

这里发生的事情是这个属性既保存在记录中,也保存在信息集中。当您修改记录而不是信息集时,下次读取属性时,信息集值将获胜并且您的记录值将被覆盖。这是您不应该自己触摸记录的众多原因之一。