当我通过Visual Studio 2008运行我的MVC应用程序时,该网站在样式,图像等方面看起来很好。
但是如果我将这个版本发布到一个文件夹并使用IIS来查看它,那么样式就到处都是,图像也不对。
最初,我认为这对于样式表来说代表了我的一些错误,但我只使用了与MVC模板开箱即用的样式表的略微修改版本。
我是否在发布网站或使用CSS表单方面做错了什么?
亲切的问候,
布雷特
答案 0 :(得分:3)
最可能的罪魁祸首是您的路径是相对于站点的根目录而您是在不在根目录的文件夹中发布。您需要更改CSS中的网址,使其与CSS文件相关,并在标记中使用Url.Content,以便动态转换网址。
<img src='<%= Url.Content( "~/Content/images/image.png" ) %>' alt="" />
答案 1 :(得分:1)
我几乎遇到了完全相同的问题,然后记住了我的网址。如果您在IIS版本中查看源代码,那么在指向CSS文件等时,您应该能够看到URL不正确...
我用助手方法替换了我主人的所有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,但我认为这是在开发者工具部分。
答案 2 :(得分:0)
这完全是我的错!
我在我的页面上使用了标签来尝试显示表格数据 - 当我从Visual Studio中运行项目时这很好,但是当我发布网站时,页面上的CSS在Internet Explorer的页面上显示失真7和8。
然而,当我在Firefox 3中查看相同的已发布版本时,该网站似乎在页面上正确呈现......!奇怪,我知道。
我确实尝试纠正CSS以修复在Internet Explorer中无法正确呈现的部分,但最终由于时间的原因完全删除了标记,而是引入了标记,这让我感到非常沮丧!