2009-03-10 1 views
0

Просто хочу подтвердить, что нет возможности расширить или заменить функциональность Html.Image без написания функции замены.Расширение/замена Html.Image для Amazon S3 (или другого CDN)

Я хочу написать функцию, которая будет использовать сервис Amazon S3 для размещения изображений.

Лучший подход, который я придумал, - это вспомогательный метод Html.SmartImage, который проверял бы свойство конфигурации, чтобы узнать, хочу ли я пойти в Амазонку или нет. Он может даже проверять базу данных файлов, размещенных удаленно, и только «сгруппировать их», если они находятся в этом списке.

Я выложу то, что у меня есть, когда я это сделал, но интересуюсь любыми идеями «вне коробки».

+0

Html.Image отсутствует в стандартных вспомогательных библиотеках, это из mvc-contrib? – ChadT

+0

@DaRKoN_ в настоящее время да –

ответ

0

Нет, вы правы, вам нужно создать свой собственный метод расширения для обработки настраиваемых сценариев, подобных этому.

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 в качестве заполнителя здесь - вы должны заполнить URL-адрес своего CDN, какой бы он ни был.

При необходимости вы можете использовать какое-либо свойство конфигурации, чтобы определить, действительно ли вы выполняете замену.

Смежные вопросы