Поле размещения при редактировании элементов в N2 cms? - PullRequest
0 голосов
/ 11 марта 2011

Работая на N2 CMS, я добавляю свой собственный тип контента Product.Я получаю свой класс Product из ContentPageBase и могу добавить его в дерево контента.Однако, когда я редактирую элемент, поля кажутся инвертированными (Title и Text).Для всех примеров элементов (например, News) Title всегда отображается вверху.

Я понимаю, что есть свойство ContainerName, которое может быть установлено в tabname , однако я не вижу переопределений свойств для Title или Text в классе News, так как это может быть?

Редактирование новости

Editing news item

Редактирование продукта

Editing product item

Product.cs (настраиваемый)

using N2;
using N2.Web;
using N2.Details;
using N2.Integrity;

namespace N2.Templates.Mvc.Models.Pages
{
  /// <summary>
  /// This class represents the data transfer object that encapsulates 
  /// the information used by the template.
  /// </summary>
  [PageDefinition("Product")]
  [WithEditableTitle, WithEditableName]
  [RestrictParents(typeof(ProductSection),typeof(ProductCategory))]
  public class Product : ContentPageBase
  {

  }
}

News.cs (по умолчанию)

using System.Web.UI.WebControls;
using N2.Definitions;
using N2.Details;
using N2.Integrity;
using N2.Templates.Mvc.Services;
using N2.Web.Mvc;
using N2.Persistence;

namespace N2.Templates.Mvc.Models.Pages
{
    [PageDefinition("News", Description = "A news page.", SortOrder = 155,
        IconUrl = "~/Content/Img/newspaper.png")]
    [RestrictParents(typeof (NewsContainer))]
    public class News : ContentPageBase, ISyndicatable
    {
        public News()
        {
            Visible = false;
            Syndicate = true;
        }

        [EditableTextBox("Introduction", 90, ContainerName = Tabs.Content, TextMode = TextBoxMode.MultiLine, Rows = 4,
            Columns = 80)]
        public virtual string Introduction
        {
            get { return (string) (GetDetail("Introduction") ?? string.Empty); }
            set { SetDetail("Introduction", value, string.Empty); }
        }

        string ISyndicatable.Summary
        {
            get { return Introduction; }
        }

        [Persistable(PersistAs = PropertyPersistenceLocation.Detail)]
        public virtual bool Syndicate { get; set; }
    }
}

1 Ответ

2 голосов
/ 11 марта 2011

Редакторы заголовков и имен устанавливаются не для самих свойств, а для класса.

См. Атрибуты WithEditableTitle и WithEditableName в вашем классе.

И класс News не должен указывать их, потому что он наследуется от ContentPageBase вместо корневого ContentItem класса, который используется вашим Product классом. У ContentPageBase уже есть редакторы Title и Name, поэтому News больше не нужно.

...