将Sitecore / GlassView RenderImage与项目(MVC)

时间:2015-05-14 15:36:25

标签: sitecore glass-mapper sitecore-mvc sitecore8

我在View中有很多项目,它们不是模型上的字段,只是项目。我真的想要使用RenderImage,所以我不必重新发明所有的html代码,但它确实需要一个项目或GlassView类型的项目。

是否有一种简单的方法可以强制将项目输入GlassView.RenderImage?

sitecore的渲染图片怎么样?它只是想要一个字段值,但我想给它一个项目?

2 个答案:

答案 0 :(得分:2)

您应该添加一个扩展现有(基于Sitecore模板)的模型。

例如,您拥有IArticle模型,该模型包含项目的每个字段,但不像往常一样。您应该创建一个继承原始模型的新模型,如果设置正确,您可以添加将由Glass映射的新字段。您可以使用以下attributes代码:

  • [SitecoreNode](按ID或路径定义项目)
  • [SitecoreParent](按层次结构)
  • [SitecoreQuery](sitecore query)
  • [SitecoreChildren](层次结构)

<强>模型

/// This model is based on the Sitecore template
[SitecoreType(TemplateId = "something")]
public interface IArticle : IBaseItem {
    [SitecoreField]
    string Title { get; set; }

    [SitecoreField]
    string Content { get; set; }
}

/// This model defines additional items.
public interface IArticleDetail : IArticle {
    [SitecoreNode(Id = Constants.MainBannerId)]
    IBanner PromoBanner { get; set; }

    [SitecoreQuery("somequery")]
    IEnumerable<ITag> Tags { get; set; }
}

在这种情况下,GlassView继承自IArticleDetail,模型绑定器也会传播其他字段。

如果要渲染(可编辑图像),可以使用以下语法:

@RenderImage(Model.PromoBanner, m => BannerImage, isEditable: true)

@Html.Glass().RenderImage(Model.PromoBanner, m => BannerImage, isEditable: true)

答案 1 :(得分:0)

@RenderImage只接受Glass.Mapper.Sc.Fields.Image类型,但如果您在Item的视图中有属性,我建议您使用标准的HTML帮助字段渲染:

@Html.Sitecore().Field("Field Name", Model.SomeSubItem)