Вы можете создать метод расширения 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, иначе он его не распознает.