代码之家  ›  专栏  ›  技术社区  ›  Brett Rigby

VS2008中的ASP.NET MVC-发布的内部版本显示不同

  •  0
  • Brett Rigby  · 技术社区  · 16 年前

    当我通过Visual Studio 2008运行我的MVC应用程序时,网站在样式、图像等方面看起来很好。

    但是如果我将这个构建发布到一个文件夹中,并使用IIS来查看它,那么样式就到处都是,图像也不正确。

    起初,我认为这是我在样式表方面的一些错误,但是我只使用了一个稍微修改过的样式表版本,这个版本是用MVC模板从框中出来的。

    在发布网站或CSS工作表方面,我是否做了一些错误的事情?

    亲切的问候,

    布雷特

    3 回复  |  直到 16 年前
        1
  •  3
  •   tvanfosson    16 年前

    最可能的罪魁祸首是,您的路径相对于站点的根目录,并且您发布的文件夹不在根目录下。您需要更改CSS中的URL,使其与CSS文件相关,并在标记中使用url.content,以便动态转换URL。

    <img src='<%= Url.Content( "~/Content/images/image.png" ) %>' alt="" />
    
        2
  •  1
  •   boymc    16 年前

    我有几乎完全相同的问题,然后记得我的网址。如果您在您的IIS版本中查看源,您应该能够看到当指向CSS文件等时,URL是不正确的…

    我用helper方法替换了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,但我想它在开发者工具部分。

        3
  •  0
  •   Brett Rigby    15 年前

    这完全是我的错!

    我使用页面上的标记来尝试显示表格数据——当我在Visual Studio中运行项目时,这一点表现得很好,但是当我发布该网站时,页面上的CSS在Internet Explorer 7和8中的页面上出现了失真。

    但是,当我在Firefox3中查看相同的发布版本时,网站在页面上呈现的似乎是正确的…!奇怪,我知道。

    我确实尝试更正CSS来修复那些在Internet Explorer中呈现不正确的部分,但最终完全是由于时间的原因而删除了这些标记,反而带来了这些标记,这让我非常沮丧!