当我通过 Visual Studio 2008 运行我的 MVC 应用程序时,该网站在样式、图像等方面看起来不错。
但是,如果我将此构建发布到一个文件夹并使用 IIS 来查看它,那么样式就已经全部到位,并且图像也不正确。
最初,我认为这是关于样式表的一些错误,但我只使用了 MVC 模板开箱即用的样式表的略微修改版本。
我在发布网站或 CSS 表方面做错了吗?
亲切的问候,
布雷特
当我通过 Visual Studio 2008 运行我的 MVC 应用程序时,该网站在样式、图像等方面看起来不错。
但是,如果我将此构建发布到一个文件夹并使用 IIS 来查看它,那么样式就已经全部到位,并且图像也不正确。
最初,我认为这是关于样式表的一些错误,但我只使用了 MVC 模板开箱即用的样式表的略微修改版本。
我在发布网站或 CSS 表方面做错了吗?
亲切的问候,
布雷特
最可能的罪魁祸首是您的路径相对于站点的根目录,并且您在不在根目录的文件夹中发布。您需要更改 CSS 中的 URL 以使它们与 CSS 文件相关,并在标记中使用 Url.Content 以便动态翻译 URL。
<img src='<%= Url.Content( "~/Content/images/image.png" ) %>' alt="" />
我遇到了几乎完全相同的问题,然后记住了我的 URL。如果您在 IIS 版本中查看源代码,您应该能够看到指向 CSS 文件等时 URL 不正确...
我用辅助方法替换了我的 master 中的所有 CSS 和 JS 调用,例如:
<%= Html.RegisterCSS("site.css") %>
<%= Html.RegisterScript("jquery-1.3.2.min.js") %>
希望这可以帮助...
编辑:啊,是的,我创建了一个助手来“帮助”我。所以,我在帮助程序中有以下代码。
public static string RegisterScript(this System.Web.Mvc.HtmlHelper helper, string scriptFileName)
{
string scriptRoot = VirtualPathUtility.ToAbsolute("~/Scripts");
string scriptFormat = "<script src=\"{0}/{1}\" type=\"text/javascript\"></script>\r\n";
return string.Format(scriptFormat, scriptRoot, scriptFileName);
}
public static string RegisterCSS(this System.Web.Mvc.HtmlHelper helper, string FileName)
{
//get the directory where the scripts are
string Root = VirtualPathUtility.ToAbsolute("~/Content");
string Format = "<link href=\"{0}/{1}?{2}\" rel=\"stylesheet\" type=\"text/css\" />";
return string.Format(Format, Root, FileName, DateTime.Now.ToString("hhmmss"));
}
而且我有一个“陷阱”,即 IE8 在 IE7 模式下显示。这让我很头疼,直到一位同事指出...我这里没有 IE8,但我认为它在开发人员工具部分。
这完全是我的错!
我在页面上使用标签来尝试显示表格数据 - 当我在 Visual Studio 中运行项目时,这表现得很好,但是当我发布网站时,页面上的 CSS 在 Internet Explorer 7 和 8 的页面上出现扭曲.
但是,当我在 Firefox 3 中查看相同的已发布版本时,该网站似乎在页面上正确呈现......!奇怪,我知道。
我确实尝试更正 CSS 以修复在 Internet Explorer 中无法正确呈现的部分,但由于时间原因最终完全删除了标签,而是引入了标签,这让我非常沮丧!