代码之家  ›  专栏  ›  技术社区  ›  jhansen

Sitecore Glass Mapper(v4):通过RenderImage添加自定义查询字符串参数

  •  0
  • jhansen  · 技术社区  · 9 年前

    使用Sitecore版本4(MVC)的Glass Mapper,我需要以下方法调用:

    @Html.Glass().RenderImage(Model, x => x.PhotoField, new {cropregion = xmlValue.GetCropRegion()}, true, true)
    

    导致:

    <img src="/sitecore/shell/-/media/Default-Website/cover.jpg?h=550&amp;w=1600&amp;la=en&amp;hash=2986CA8291803D4A8EAC3B5A1C276E27D4877DCC&amp;cropregion=534,11,1348,548" width="1600" height="550" />
    

    当前,RenderImage调用将导致 cropimage 作为属性而不是图像的查询字符串添加。似乎有一个值列表,如果在RenderImage中传递,这些值将作为查询字符串参数而不是属性添加,并且该列表似乎在 Config 类别:

                ImageQueryString = new HashSet<string>(new[]
            {
                ImageParameterKeys.OUTPUT_METHOD,
                ImageParameterKeys.ALLOW_STRETCH,
                ImageParameterKeys.IGNORE_ASPECT_RATIO,
                ImageParameterKeys.SCALE,
                ImageParameterKeys.MAX_WIDTH,
                ImageParameterKeys.MAX_HEIGHT,
                ImageParameterKeys.THUMBNAIL,
                ImageParameterKeys.BACKGROUND_COLOR,
                ImageParameterKeys.DATABASE,
                ImageParameterKeys.LANGUAGE,
                ImageParameterKeys.VERSION,
                ImageParameterKeys.DISABLE_MEDIA_CACHE,
                ImageParameterKeys.WIDTH,
                ImageParameterKeys.HEIGHT
            });
    

    所以,我的问题是:对我来说,将“裁剪区域”添加到这个图像参数密钥哈希集中的最佳方法是什么?我是否应该编写自己的配置文件,并将其替换为stock Glass Mapper配置类?或者,在初始化Glass时,我是否可以在这个HashSet中插入另一个值?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ben Golden    9 年前

    我想你应该可以在你的 GlassMapperScCustom.CreateResolver 方法试试这个:

    public static IDependencyResolver CreateResolver(){
        var config = new Glass.Mapper.Sc.Config();
        config.ImageQueryString.Add("cropregion");
    
        var dependencyResolver = new DependencyResolver(config);
        // add any changes to the standard resolver here
        return dependencyResolver;
    }