静态内容对开发和生产环境的影响

时间:2011-07-01 05:52:48

标签: asp.net-mvc static

我正在使用Asp.Net MVC 2来构建Web应用程序。问题是关于静态内容。在制作中,静态内容位于子域http://static.jobsora.com/content/css/。而在开发过程中,它位于../Content/css/的默认位置。示例:

生产:

<link rel="stylesheet" type="text/css" href="http://static.jobsora.com/Content/css/search-min.css" />

发展:

<link rel="stylesheet" type="text/css" href="<%= Url.Content("~/Content/css/search-min.css") %>" />

我知道生产代码库的变化根本不是一种方法。所以,我正在寻找更好的方法。我认为这可以通过绝对URL来解决,但是如何?不知道!

感谢。

2 个答案:

答案 0 :(得分:1)

考虑通过向头部添加链接元素,可编程地添加指向页面的链接。它可以通过代码隐藏来完成,您可以使用以下方式解决这个问题:

#if DEBUG

#else

#endif

或其他一些构造。

HTH。

答案 1 :(得分:1)

创建一个这样的自定义助手:

public static class HtmlHelpers
{
    public static MvcHtmlString Css(this HtmlHelper helper, string fileName)
    {
        string folder = ConfigurationManager.AppSettings["StaticContent"];
        fileName += (fileName.EndsWith(".css") == true) ? "" : ".css";
        return MvcHtmlString.Create(string.Format(@"<link rel=""stylesheet"" type=""text/css"" href=""{0}/{1}"" />", folder, helper.AttributeEncode(fileName)));
    }
}

然后在您的视图中,您只需要:

@Html.Css("search-min.css")

然后,您可以使用web.config转换来设置开发和生产的值。您可以在此处找到信息http://msdn.microsoft.com/en-us/library/dd465326.aspx