我在View中有很多项目,它们不是模型上的字段,只是项目。我真的想要使用RenderImage,所以我不必重新发明所有的html代码,但它确实需要一个项目或GlassView类型的项目。
是否有一种简单的方法可以强制将项目输入GlassView.RenderImage?
sitecore的渲染图片怎么样?它只是想要一个字段值,但我想给它一个项目?
答案 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)