Где-то вам нужно будет использовать параметр конфигурации, чтобы указать, какое поведение вам требуется в данной среде (я полагаю, вы можете использовать свойство IsDebuggingEnabled , но пользовательский параметр конфигурации является более гибким).
Я могу придумать два возможных метода.
Опция 1
Вы можете написать свой собственный метод расширения для UrlHelper
, который выбирает соответствующий параметр конфигурации.Ваш код представления будет тогда изолирован от знания конфигурации, например:
<script src="@Url.StaticContent("~/Scripts/jquery.someScript.js")" type="text/javascript"></script>
Вот пример реализации (не проверено):
public static class UrlHelperExtensions
{
public static string StaticContent(this UrlHelper urlHelper, string contentPath)
{
if (!VirtualPathUtility.IsAppRelative(contentPath))
{
throw new ArgumentException("Only use app relative paths");
}
// TODO: Further checks required - e.g. the path "~" passes the above test
if (UseRemoteServer)
{
// Remove the initial "~/" from the content path
contentPath = contentPath.Substring(2);
return VirtualPathUtility.Combine(RemoteServer, contentPath);
}
return urlHelper.Content(contentPath);
}
private static string RemoteServer
{
get
{
// TODO: Determine based on configuration/context etc
return null;
}
}
private static bool UseRemoteServer
{
get
{
return !string.IsNullOrWhiteSpace(RemoteServer);
}
}
}
Опция 2
Альтернативой может быть использование чего-то вроде Combres , но изменение конфигурации для среды путем преобразования XML-файла конфигурации Combres.