Я разрабатываю собственный модуль новостей для Orchard CMS. Мой NewsItem
состоит из нескольких частей: TitlePart
, CommonPart
, BodyPart
и моего собственного NewsPart
.
Когда я пытаюсь создать и сохранить элемент, BodyPart
становится пустым (остальные части сохраняются правильно), а в БД есть значение NULL
. Если я изменю значение столбца Text
в таблице Common_BodyPartRecord
, а затем открою элемент в режиме редактирования, редактор будет пуст, значение не будет загружено.
вот определение моего NewsItem
от migrations.cs
:
ContentDefinitionManager.AlterTypeDefinition("NewsItem", t => t
.WithPart("NewsPart")
.WithPart("CommonPart", p => p.WithSetting("DateEditorSettings.ShowDateEditor", "true"))
.WithPart("TitlePart")
.WithPart("BodyPart")
.Draftable()
);
Я пытался отладить BodyPartDriver
class. Когда я загружаю редактор новостей в интерфейсе администратора, метод Editor()
имеет входной параметр BodyPart part
. это экземпляр BodyPart
, прикрепленный к моему NewsItem
. А здесь part.Text
— пустая строка. Но part.base.Record.Text = "Test"
так как я устанавливал напрямую в таблицу БД.
Я не могу понять, что здесь не так. Другие части, такие как TitlePart
или мой NewsPart
, работают нормально. У меня нет пользовательского кода с этим BodyPart
в моем модуле. Кажется, я что-то упустил, но что именно?
Кроме того. В журнале ошибок Orchard есть исключение:
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>").
PS: я добавил атрибут [ValidateInput(false)]
к моему классу NewsAdminController
, как по умолчанию Orchard.Core.Contents.Controllers.AdminController
. И теперь BodyPart
сохраняет корректно. Но мне кажется, что это неправильный путь.