2017-01-10 18 views
1

Я хочу, чтобы пользователь сможет выбрать цвет фона, используя выпадающий списокSitecore MVC Стандартные параметры рендеринга

Я создал новый шаблон, который наследуется от стандартных параметров визуализации в качестве шаблона базы и стандартное значение имеет $ имя маркера

Вот определение шаблона Цвет:
ColorName --- DropLink ---/Sitecore/содержание/Главная/Global/цвета

[SitecoreType(TemplateId = "{55DB8F6A-807D-48F8-A3D1-D81037938F13}", AutoMap = true)] 
public interface IColor:IContentBase 
{ 
    string ColorName { get; set; } 
} 

Я также создал несколько экземпляров шаблона (Red , Синий, зеленый)

enter image description here

Затем я задаю шаблон цвета к ViewRendering в качестве параметра.

enter image description here

Наконец, в cshtml файле, я стараюсь читать этому параметру

@using Glass.Mapper.Sc 
@model INews 

<H3> Hot News: </H3> 
@{ 
    var rendering = RenderingContext.Current.Rendering; 
    string id = rendering.Parameters["ColorName"]; 
    var context = new SitecoreContext(); 
    var result=context.GetItem<IColor>(new Guid(id)); 

} 

<div style="background-color: @NewsRepository.GetBackgroundColor(rendering);" class="panel-body"> 
    <br/> 
    <span>@result.ColorName</span><br/> 
    @Model.Title 
</div> 

Результат всегда {55DB8F6A-807D-48F8-A3D1-D81037938F13}, тогда как я ожидал "Green". Также пытался использовать Sitecore API, установленный GlassMapper, но все же я получаю Guid.

ответ

2

Поскольку вы используете Glass Mapper, вы должны создать модели для параметров рендеринга так же, как и для любого другого шаблона.

Создайте модель для элемента поиска. Я предлагаю вам создать общий тип, а не называть его «Цвет». Это позволит вам повторно использовать их для других элементов поиска из кода.

[SitecoreType(TemplateId = "{template-guid}", AutoMap = true)] 
public class LookupItemModel : GlassBase 
{ 
    public virtual string Text { get; set; } 
} 

Создайте модель для параметров рендеринга. Убедитесь, что вы установили TemplateId в свой шаблон параметров рендеринга. Обратите внимание, что для возвращаемого типа свойства установлено значение LookupItemModel, которое мы создали выше.

[SitecoreType(TemplateId = "{guid-for-rendering-parameter}", AutoMap = true)] 
public class ColorParameters 
{ 
    public virtual LookupItemModel Color { get; set; } 
} 

Теперь вы можете получить доступ к параметрам рендеринга в качестве строго типизированной модели в своих представлениях. Из-за того, что тип возвращаемого значения правильно установлен выше, Glass автоматически сопоставляет направляющий элемент для поиска, и вам не придется делать отдельный вызов context.GetItem().

@{ 
    var parameters = Html.Glass().GetRenderingParameters<ColorParameters>(); 
    string color = parameters.Color.Text; 
} 

Дополнительную информацию об использовании Rendering Parameters in Glass mapper in this article вы можете получить.

+0

Спасибо за ваш ответ. Я уже определил класс IColor. но возврат вертела к стеклу Guid –

+0

Вам нужно будет обновить исходный вопрос с подробной информацией, но он должен работать. Убедитесь, что вы опубликовали все свои шаблоны и элементы. – jammykam

0

Попробуйте использовать следующие

@result.ColorName.Value.Tostring();