2015-09-15 2 views
1

Я получаю сообщение об ошибке «Элемент модели, переданный в словарь, имеет тип« Orchard.UI.Zones.ZoneHolding », но для этого словаря требуется элемент модели типа« Первый. Мод ». Models.PersonListPart '", при вводе страницы редактора для содержимого в панели управления администратора.Ошибка создания пользовательского ContentPart Orchard CMS

Мой водитель содержание выглядит следующим образом:

public class PersonListPartDriver : ContentPartDriver<PersonListPart> 
    { 


     protected override DriverResult Display(
      PersonListPart part, string displayType, dynamic shapeHelper) { 
      return ContentShape("Parts_PersonList", 
       () => shapeHelper.Parts_PersonList(
         MaxCount: part.MaxCount 
        )); 
     } 


     protected override DriverResult Editor(
      PersonListPart part, dynamic shapeHelper) { 
      return ContentShape("Parts_PersonList_Edit", 
       () => shapeHelper.EditorTemplate(
        TemplateName: "Parts/PersonList", 
        Models: part, 
        Prefix: Prefix 
)); 
     } 

     //POST 
     protected override DriverResult Editor(
      PersonListPart part, IUpdateModel updater, dynamic shapeHelper) 
     { 

      updater.TryUpdateModel(part, Prefix, null, null); 
      return Editor(part, shapeHelper); 
     } 
    } 

Мои PersonListPart Модель выглядит следующим образом:

namespace First.Module.Models { 

    public class PersonListPart : ContentPart<PersonListPartRecord> { 
     public int MaxCount { 
      get { return Record.MaxCount; } 
      set { Record.MaxCount = value; } 
     } 
    } 


    public class PersonListPartRecord : ContentPartRecord { 
     public virtual int MaxCount { get; set; } 
    } 
} 

Он загружает редактор CSHTML для содержательной части, которая выглядит как:

@model First.Module.Models.PersonListPart 

<fieldset> 
    <legend>@T("Person List Settings")</legend> 
    <ol> 
     <li> 
      @Html.LabelFor(m => m.MaxCount, T("Maximal count")); 

      @Html.TextBoxFor(m => m.MaxCount, new { @class = "text small" }) 
     </li> 
    </ol> 
</fieldset> 

В частности, проблема связана с @model.

Когда вы отлаживаете и комментируете @model, Model.ContentItem.Part [0] имеет элемент, но, будучи новым для Orchard CMS, я не понимаю, как правильно это использовать.

+0

Что ваше PersonListPart выглядеть? –

+0

@ user3123386 добавлен PersonListPart выше –

ответ

3

Опечатка была у PersonListPartDriverРедактор Метод. Поскольку значения в EditorTemplate() являются динамическими, легко создать опечатку, и в этом случае она создала ошибку, которую было сложно отладить.

protected override DriverResult Editor(
     PersonListPart part, dynamic shapeHelper) { 
      return ContentShape("Parts_PersonList_Edit", 
       () => shapeHelper.EditorTemplate(
        TemplateName: "Parts/PersonList", 
        Models: part, 
        Prefix: Prefix 
    )); 
} 

Исправление

Models: part, 

должен быть

Model: part, 
+0

Lol, сделал то же опечатку – Peter