2009-03-10 8 views
0

だけ置換機能を記述することなくHtml.Image機能を拡張または交換する方法がないことを確認します。アマゾンS3(またはその他のCDN)のためHtml.Imageを交換/延長

私が映像をホスティングするためにAmazonのS3サービスを使用する関数を書きたいです。

私が思いついた最善のアプローチは、ヘルパーメソッドHtml.SmartImageです。構成プロパティをチェックして、Amazonに移動したいかどうかを確認します。それも、リモートでホストされていると、彼らはそのリストにある場合のみ、「それらを耕作」されているファイルのデータベースをチェックすることができます。アイディアボックスの外側 "が、どの程度の好奇心 -

私はそれをやったとき、私が持っているもの投稿します。

+0

Html.Imageは標準ヘルパーライブラリにはありませんが、mvc-contribからですか? – ChadT

+0

@DaRKoN_現在はい –

答えて

0

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

0

これは私が何をしたかである - 少なくとも今のところ:

検索と置換:

Html.CDNImage("~ 

ため

html.image("~ 

をそして静的クラス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を必ず入力してください。

何らかの種類の構成プロパティを使用して、実際に交換を行うかどうかを判断できます。

関連する問題