0

置換関数を作成せずに Html.Image 機能を拡張または置換する方法がないことを確認したいだけです。

イメージをホストするために Amazon の S3 サービスを使用する関数を作成したいと考えています。

私が思いついた最善のアプローチはHtml.SmartImage、構成プロパティをチェックして Amazon に行きたいかどうかを確認するヘルパー メソッドです。リモートでホストされているファイルのデータベースをチェックし、それらがそのリストにある場合にのみ「ファームアウト」することさえあります。

私がそれをやったときに私が持っているものを投稿します-しかし、「箱の外」のアイデアに興味があります.

4

2 に答える 2

0

このようなカスタム シナリオを処理するには、独自の拡張メソッドを作成する必要があります。

于 2009-03-10T04:35:50.930 に答える
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 に答える