【问题标题】:MVC 4 Bootstrap - Icon IssueMVC 4 Bootstrap - 图标问题
【发布时间】:2014-07-04 13:39:38
【问题描述】:

我遇到了远程发布时图标不显示的问题。如果我通过http://localhost:62299/ 在 Visual Studio 2010 中运行该项目,我会在 Firefox 中完美地看到所有内容,但如果我使用相同的浏览器查看远程网站,则图标不会显示。在不同版本的 IE 中也能获得不同的结果。

我已确保完整复制了完整的 /Contents 和 /Scripts 文件夹,以确保没有遗漏任何文件。但尽管如此,图标仍然不会显示。

BundleConfig.cs

using System.Web.Optimization;

namespace WebApplication1
{
    public class BundleConfig
    {
        // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.IgnoreList.Clear();

            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryold").Include(
                        "~/Scripts/Compatibility/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryuiold").Include(
                        "~/Scripts/Compatibility/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));

            bundles.Add(new ScriptBundle("~/bundles/ie9").Include(
                        "~/Scripts/html5shiv.js",
                        "~/Scripts/respond.min.js"));

            bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                        "~/Scripts/bootstrap*"));

            bundles.Add(new ScriptBundle("~/bundles/freelanceold").Include(
                        "~/Scripts/jquery.easing.min.js",
                        "~/Scripts/classie.js",
                        "~/Scripts/freelancer.js"));

            bundles.Add(new ScriptBundle("~/bundles/freelance").Include(
                        "~/Scripts/jquery.easing.min.js",
                        "~/Scripts/classie.js",
                        "~/Scripts/cbpAnimatedHeader.js",
                        "~/Scripts/freelancer.js"));

            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));

            bundles.Add(new StyleBundle("~/Content/css").Include(
                        "~/Content/bootstrap.min.css",
                        "~/Content/Site.css"));

            bundles.Add(new StyleBundle("~/Content/font-awesome").Include(
                        "~/Content/font-awesome/css/font-awesome.min.css"));
        }
    }
}

_layout.cshtml

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
        <title>@ViewBag.Title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
        <meta name="description" content="" />
        <meta name="author" content="" />
        @Styles.Render("~/Content/css")
        @Styles.Render("~/Content/font-awesome")
        @Scripts.Render("~/bundles/modernizr")
        <link href='http://fonts.googleapis.com/css?family=Montserrat:400' rel='stylesheet' type='text/css' />
        <link href='http://fonts.googleapis.com/css?family=Montserrat:700' rel='stylesheet' type='text/css' />
    </head>

    <body id="page-top">
        @RenderSection("featured", required: false)
        @RenderBody()
        <footer class="text-center">
            <div class="footer-below">
                <div class="container">
                    <div class="row">
                        <div class="col-lg-12">
                            Copyright &copy; 2014 - MySite
                        </div>
                    </div>
                </div>
            </div>
        </footer>

        <div class="scroll-top page-scroll visible-xs visble-sm">
            <a class="btn btn-primary" href="#page-top">
                <i class="fa fa-chevron-up"></i>
            </a>
        </div>

        <!--[if lt IE 9]>
        @Scripts.Render("~/bundles/jqueryold")
        <![endif]-->
        <!--[if gte IE 9]><!-->
        @Scripts.Render("~/bundles/jquery")
        <!--<![endif]-->
        @Scripts.Render("~/bundles/bootstrap")
        @Scripts.Render("~/bundles/freelance")

        <!-- IE8 support for HTML5 elements and media queries -->
        <!--[if lt IE 9 !IE]>
            @Scripts.Render("~/bundles/ie9")
        <![endif]-->    

        @RenderSection("scripts", required: false)
    </body>
</html>

任何帮助将不胜感激:-)

【问题讨论】:

  • 哪些图标没有显示,我怀疑它们的网址是错误的
  • 我同意@EhsanSajjad,您的图标路径是否与错误位置相关?例如,尝试在 Chrome 中使用开发者控制台,看看在尝试加载这些资产时是否遇到任何 404 错误。
  • 我会使用开发者控制台看看,但如果我通过 Visual Studio 2010 发布项目,本地主机与远程有何不同?
  • 首先,您可能要发布到子目录,例如,您的网站在www.domain.com/mysite 上运行,并且图标试图来自项目范围之外的`/icons/foo.png'。其次,在发布模式下,捆绑优化你的 CSS 和 JS 文件。
  • 这是我刚刚从开发者控制台Request URL: http://WebApplication1/Content/font-awesome?v=RQz58PBPiAX9UQCybbfMPkfO33wv39gGmQRFOVCaIi41 Request Method: GET Status Code: HTTP/1.1 301 Moved PermanentlyRequest URL: http://WebApplication1/Content/font-awesome/?v=RQz58PBPiAX9UQCybbfMPkfO33wv39gGmQRFOVCaIi41 Request Method: GET Status Code: HTTP/1.1 403 Forbidden得到的

标签: asp.net-mvc twitter-bootstrap asp.net-mvc-4 razor font-awesome


【解决方案1】:

我在一组 css 文件中遇到了同样的问题,其中对组合样式 url 的请求将导致 301,然后最终目的地导致 403(禁止)。这是因为您的 "~/Content/font-awesome" 样式包 url 与实际文件夹路径匹配。我认为虚拟路径解析首先将其与实际的物理文件夹位置匹配,如果失败,则尽可能匹配虚拟包 url。如果您将其更改为我在下面的内容并更新您的视图以匹配,您应该没问题:

bundles.Add(new StyleBundle("~/Content/font-awesome-bundle").Include(
                        "~/Content/font-awesome/css/font-awesome.min.css"));

@Styles.Render("~/Content/font-awesome-bundle")

【讨论】:

    【解决方案2】:

    我在工作中的一个项目中遇到了同样的问题。发生的事情是一些字体很棒的文件没有包含在发布中。

    我不包括 .eot、.tff 和 .woff。我必须单击文件,并将构建操作从“无”更改为“内容”。到那时,它们就会正确输出。

    据记录,这是在 Visual Studio 2010 中,但在 2013 年,它们似乎正确设置为“内容”。

    【讨论】:

    • 我将整个源文件夹 /Contents 复制到内部 IIS 服务器以确保没有文件丢失,我刚刚被告知我们的内部 IIS 服务器阻止外部访问,现在需要本地化 http://fonts.googleapis.com/css?family=Montserrat:400
    • 呃,太糟糕了。对不起,我的回答帮不上忙,但我希望你不介意我把它留给别人,以防万一。
    • 不用担心,感谢您抽出宝贵的时间,实际上我自己在另一篇文章中解决了这个问题。如果有任何兴趣,请参阅http://stackoverflow.com/questions/24576264/mvc-4-google-fonts-intranet :-)
    • 啊,很高兴看到你把它整理好了。控制台日志中的 font-awesome 路径是引导我前进的原因。关于从 Google 远程获取样式表的另一件事:如果您要在 https 下运行您的网站,请从您的 URL 中删除该协议。所以它只是//fonts.googleapis.com/...,因为即使将其设置为https,从我公司的观察来看,它也无法正常工作。
    【解决方案3】:

    我有一个类似的问题,下面列出的字体真棒是我当前的捆绑值,这解决了来自 Font-awesome.css 文件的附加引用的问题

    bundles.Add(new StyleBundle("~/Framework/libs/vendor/font-awesome/4.4.0/css/font-awesome").Include("~/Framework/libs/vendor/font-awesome/ 4.4.0/css/font-awesome.css"));

    当路径相对于实际的字体真棒 css 文件时,eot、tff 和 woff 文件的相对路径也将正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 2023-03-30
      • 2014-01-25
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多