0

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

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

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

当我完成它时,我会发布我所拥有的 - 但对任何“开箱即用”的想法感到好奇。

4

2 回答 2

0

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

搜索和替换:

 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。

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

于 2009-03-10T06:06:40.307 回答
0

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

于 2009-03-10T04:35:50.930 回答