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

Sitecore Glass Mapper (v4): Add custom query string parameter via RenderImage

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

@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 中传递,将被添加为查询字符串参数而不是属性,并且这个列表似乎在 main Config class:[=15 中定义=]

            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
        });

所以,我的问题是:将 "cropregion" 添加到此图像参数键哈希集的最佳方法是什么?我是否应该编写自己的配置文件并将其替换为现有的 Glass Mapper 配置 class?或者有什么方法可以让我在初始化 Glass 时向这个 HashSet 中插入另一个值?

我认为您应该能够只在 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;
}