2010-08-28 18 views
3

我有這個ASP.NET MVC應用程序,我現在想分離出圖像鏈接到CDN。 此時,圖像通常有這樣的標記代碼:如何在開發和生產站點中維護CDN圖像鏈接?

<%= Html.ActionLinkWithImage("/Content/Img/Image1.png" ... 

這使用本地Web服務器(卡西尼)工作在開發精,還出版了督促服務器時。
但現在我想生產網址是這樣的:

http://cdn.com/Img/Image1.png 

我如何得到這個容易的方式工作,所以它在開發無縫工作,並公佈後,督促?

回答

3

您可以創建一個URL擴展方法,根據Web.config文件(或其他)的值生成調試URL或實時URL。

public static MvcHtmlString CDNImageLink(this UrlHelper url, string imageName) 
{ 
    string urlFormat; 
    if((bool)ConfigurationManager.AppSettings["Debug"]) 
     urlFormat = "/Content/Img/{0}"; 
    else 
     urlFormat = "http://cdn.com/Img/{0}"; 

    return MvcHtmlString.Create(string.Format(urlFormat, imageName)); 
} 

然後,您可以使用此擴展方法你需要的地方的圖像URL(包括HTML擴展方法):

public static MvcHtmlString ActionLinkWithImage(this HtmlHelper html, string imageName) 
{ 
    UrlHelper Url = new UrlHelper(html.ViewContext.RequestContext); 
    string imageUrl = Url.CDNImageLink(imageName); 
    // generate the rest of the ActionLink using the imageUrl 
} 

確保你有一個命名空間中的using聲明其中URL擴展方法是位於聲明HTML擴展方法的文件的頂部,否則它將無法識別它。

+0

好,我也爲標準的HTML鏈接做了類似的擴展方法:http://insomniacgeek.com/code/how-to-use-cdn-links-in-your-asp-net-mvc-application-to使用-serve靜電-內容從-A-Cookie的域--IIS / – 2010-08-29 18:53:07

0

您也可以修改您的主機文件以將您的cdn域重定向到另一個IP地址。我用它將static.myresources.com重定向到本地主機,並且它保持你的html非常乾淨。