Sitecore 8 MVC: как сделать поле редактируемым в редакторе страниц

Я пытаюсь сделать свой сайт Sitecore совместимым с редактором страниц, т. е. все текстовые поля, редактор форматированного текста и т. д. должны обновляться в редакторе страниц.

До сих пор я изменил шаблон TDS T4, который возвращает HTMLString для каждого поля, как показано ниже:

public HtmlString HeroImageField(bool isEditable = true, string parameters = "")
{ 
    string renderParameter = GenerateRenderParameter(isEditable, parameters);

    return new HtmlString(Sitecore.Web.UI.WebControls.FieldRenderer.Render(
        Sitecore.Context.Database.GetItem(this.EntityId.ToString()), "Hero Image", renderParameter ));
}

Итак, я просто называю Model.HeroImage()

Есть ли лучший способ достичь выше? Возможно, Glass Mapper поставляется с готовой поддержкой для этого (чего я не знаю).


person Nil Pun    schedule 15.10.2015    source источник
comment
Итак, что же возвращает FieldRenderer в отладчике в вашем примере? И как вы пытаетесь использовать это в своем представлении?   -  person Martin Miles    schedule 15.10.2015
comment
Какие шаблоны TDS T4 вы редактировали? Эти шаблоны TDS Codegen? Если это так, вам не нужно их редактировать, просто ваше использование неверно, как ответил РванДален.   -  person jammykam    schedule 15.10.2015
comment
@MartinMiles, поскольку он будет использоваться как Model.HeroImageField (true, wd = 200, ht = 300)   -  person Nil Pun    schedule 17.10.2015


Ответы (2)


Sitecore поставляется с помощниками MVC, которые можно использовать для редактирования полей:

@Html.Sitecore().Field("My Field Name") //Context item by default
@Html.Sitecore().Field("My Field Name", Model.PageItem) //Explicit page item
@Html.Sitecore().Field("My Field Name", Model.Item) //Datasource item (may be context item)

Я также рекомендую использовать контроллер для загрузки другого представления для редактирования. Для авторских полей часто требуется другой визуальный элемент. Карусели/вкладки должны быть сглажены, сообщения проверки должны быть видны и т. д.

Подробнее см. на странице: http://sitecore-community.github.io/docs/sitecore-mvc/rendering-content/

person Jay S    schedule 15.10.2015

Для этого у Glass mapper есть что-то OOTB. Вы можете использовать расширенный WebViewPage GlassView и использовать методы Editable, как описано здесь: http://glass.lu/Mapper/Sc/Tutorials/Tutorial14

person RvanDalen    schedule 15.10.2015