Сохранить Действие на веб-формах для маркетологов вызывает исключение

Я использую последнюю версию Sitecore — 7.2 (версия 140228) и последнюю версию WFFM — версию 2.4. 140923. Таким образом, проблема заключается в том, что всякий раз, когда я пытаюсь отправить форму, независимо от того, какое действие сохранения у меня есть, Sitecore выдает исключение:

В экземпляре объекта не задана ссылка на объект.

Описание: Произошло необработанное исключение.

Сведения об исключении: System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта.

Трассировки стека:

[NullReferenceException: Object reference not set to an instance of an object.]
   Sitecore.Forms.Mvc.Controllers.ModelBinders.FormModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +571
   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +457
   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +152
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +641

Некоторая дополнительная информация. Последняя версия WFFM поддерживает MVC, поэтому в этом сценарии я использую макет cshtml. Это сообщение в блоге, в котором описано, как использовать MVC — ЭТО Несмотря на то, что это для предыдущих версий SC, это не имеет значения, и решение применимо для последней версии .


person IIvanov    schedule 29.09.2014    source источник
comment
Вы используете пользовательскую модель формы?   -  person nsgocev    schedule 29.09.2014
comment
Я пробовал использовать свою собственную форму, а также предопределенные формы в /sitecore/system/Modules/Web Forms for Marketers/Sampleforms/... Результат тот же.   -  person IIvanov    schedule 29.09.2014
comment
Вы уверены, что MVC работает должным образом? Также вы проверили эту статью и убедитесь, что все, что вы пытаетесь сделать, совместимо с MVC? sdn. sitecore.net/upload/sdn5/products/web_forms2/24/   -  person nsgocev    schedule 29.09.2014
comment
да. Например, в моей простой пользовательской форме я использую только поле типа «Однострочный текст», которое имеет тип MVC — Sitecore.Forms.Mvc.Models.Fields.SingleLineTextField,Sitecore.Forms.Mvc. Так я думаю, что я использую его правильно?   -  person IIvanov    schedule 29.09.2014


Ответы (1)


Думаю, у меня есть решение для этого.

Я реконструировал и отладил, используя версию контроллера и связывателя модели, которую я создал после размышлений о классах Sitecore.Forms.MVC с использованием ILSpy.

По-видимому, ссылка null возникает, когда она попадает в это:

if (controllerContext.HttpContext.Request.RequestType == "POST" && formId != item.ID)

item это null. item устанавливается в строке перед:

Sitecore.Data.Items.Item item = RenderingContext.CurrentOrNull.PageContext.Database.GetItem(RenderingContext.CurrentOrNull.Rendering.DataSource);

Свойство источника данных пусто при визуализации. Если вы проверите сведения о своей презентации, вы увидите, что это потому, что есть еще одно поле, которое используется для указания вашего идентификатора формы. Судя по всему, это похоже на ошибку Sitecore. Но простой обходной путь — установить источник данных формы как в идентификаторе формы, так и в свойстве источника данных рендеринга.

person mtelligent    schedule 17.10.2014