【问题标题】:Extending/replacing Html.Image for Amazon S3 (or other CDN)为 Amazon S3(或其他 CDN)扩展/替换 Html.Image
【发布时间】:2010-10-12 08:26:42
【问题描述】:

只是想确认不写替换函数就没有办法扩展或替换 Html.Image 功能。

我想编写一个函数,使用 Amazon 的 S3 服务来托管图像。

我想出的最好方法是一个辅助方法Html.SmartImage,它会检查配置属性,看看我是否想去亚马逊。它甚至可以检查远程托管的文件数据库,如果它们在该列表中,则仅将它们“移出”。

我会在我完成后发布我所拥有的 - 但对任何“跳出框框”的想法感到好奇。

【问题讨论】:

  • Html.Image 不在标准帮助库中,是来自 mvc-contrib 吗?

标签: asp.net-mvc amazon-s3 html-helper


【解决方案1】:

不,你是对的,你需要创建自己的扩展方法来处理这样的自定义场景。

【讨论】:

    【解决方案2】:

    这就是我所做的——至少现在是这样:

    搜索和替换:

     html.image("~
    

     Html.CDNImage("~
    

    然后在静态类ImageExtensions 中创建了一个助手:

    public static string CDNImage(this HtmlHelper htmlHelper, string imageRelativeUrl)
            {
                return CDNImage(htmlHelper, imageRelativeUrl, null, null);
            }
    
            public static string CDNImage(this HtmlHelper htmlHelper, string imageRelativeUrl, object htmlAttributes)
            {
                return CDNImage(htmlHelper, imageRelativeUrl, null, htmlAttributes);
    
            }
    
            public static string CDNImage(this HtmlHelper htmlHelper, string imageRelativeUrl, string alt, object htmlAttributes)
            {
                string url = Regex.Replace(imageRelativeUrl, "~/content/", "http://s3.amazon.com/", RegexOptions.Compiled | RegexOptions.IgnoreCase);
    
                return htmlHelper.Image(url, alt, htmlAttributes);
    
            }
    

    显然,我在这里使用s3.amazon.com 作为占位符 - 无论是什么内容,您都必须填写 CDN 的 URL。

    如果需要,您可以使用某种配置属性来确定您是否实际进行替换。

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 2023-03-03
      • 2015-10-14
      • 2017-08-10
      • 2012-11-17
      • 1970-01-01
      • 2018-11-04
      • 2014-12-12
      • 2015-04-18
      相关资源
      最近更新 更多