在某处,您将需要使用配置设置来指示在给定环境中需要哪些行为(我想您可以使用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之类的东西,但通过转换 Combres 的 XML 配置文件来修改每个环境的配置。