当前位置: 首页 > 面试题库 >

MVC4 StyleBundle无法解析图像

蔺弘
2023-03-14
问题内容

除非我愿意,否则我会坚持使用MVC的捆绑软件。我脑部崩溃,试图弄清楚指定样式束(例如独立的CSS和jQuery UI等图像集)的正确模式是什么。

我有一个典型的MVC站点结构,/Content/css/其中包含我的基本CSS,例如styles.css。在该css文件夹中,我还有子文件夹,例如/jquery- ui包含其CSS文件和一个/images文件夹的子文件夹。jQuery UI CSS中的图像路径是相对于该文件夹的,我不想弄乱它们。

据我了解,当我指定a时,StyleBundle我需要指定一个虚拟路径,该路径也与真实内容路径不匹配,因为(假设我忽略了通往Content的路由)IIS将尝试将该路径解析为物理文件。所以我指定:

bundles.Add(new StyleBundle("~/Content/styles/jquery-ui")
       .Include("~/Content/css/jquery-ui/*.css"));

使用以下方式呈现:

@Styles.Render("~/Content/styles/jquery-ui")

我可以看到请求发送到:

http://localhost/MySite/Content/styles/jquery-ui?v=nL_6HPFtzoqrts9nwrtjq0VQFYnhMjY5EopXsK8cxmg1

这将返回正确的,缩小的CSS响应。但是随后浏览器发送一个请求,要求相对链接的图像为:

http://localhost/MySite/Content/styles/images/ui-bg_highlight-soft_100_eeeeee_1x100.png

这是一个404

我知道我URL的最后一部分jquery- ui是无扩展名URL,这是我程序包的处理程序,因此我可以看到为什么对图像的相对请求很简单/styles/images/

所以我的问题是处理这种情况 的正确方法什么


问题答案:

根据MVC4 css捆绑和图像引用上的该线程,如果将捆绑定义为:

bundles.Add(new StyleBundle("~/Content/css/jquery-ui/bundle")
                   .Include("~/Content/css/jquery-ui/*.css"));

如果您在与构成包的源文件相同的路径上定义包,则相对映像路径仍将起作用。捆绑软件路径的最后一部分实际上就是filename该特定捆绑软件的(即,/bundle可以是您喜欢的任何名称)。

仅当您将同一文件夹中的CSS捆绑在一起时才有效(从捆绑的角度来看,我认为这很有意义)。

更新资料

根据@HaoKung的以下评论,现在也可以通过应用CssRewriteUrlTransformation绑定时更改CSS文件的相对URL引用)来实现。

注意:我尚未确认有关重写虚拟目录中的绝对路径的问题的注释,因此这可能不适用于所有人(?)。

bundles.Add(new StyleBundle("~/Content/css/jquery-ui/bundle")
                   .Include("~/Content/css/jquery-ui/*.css",
                    new CssRewriteUrlTransform()));


 类似资料:
  • 我正在尝试构建一个基本的MVC应用程序使用spring boot,以Hibernate作为ORM,MySql作为数据库。我面临的问题是jsp视图没有得到解决。 当我尝试使用具有以下URL的get请求获取注册表单时,会出现404错误: 这是我在应用程序中的设置。 目录结构: 用户控制器: 应用程序.属性: 服务器端口:9000 spring.datasource.url:jdbc:mysql://l

  • 问题内容: 这是我在JSP文件中的Java代码。我正进入(状态 无法解析Base64Encoder。 为什么会这样呢?我必须添加与相关的内容。任何建议将不胜感激。 问题答案: 看起来您正在使用Web应用程序中包含的jar中不存在的类。您可以尝试以下吗?如有必要,请进行调整,我只是在查看通用文档,然后将其输入- 转到http://commons.apache.org/codec/index.html

  • 问题内容: 因此,我直接从Google的android网站复制了此教程示例内容,却收到一个错误,指出R.id无法解决。 这是我的Java文件 这是我的 问题答案: 您必须导入您的R类 同样,如需求发布一样,您必须为布局使用名称空间。

  • 问题内容: 之前一切正常。然后,我碰巧将一个新的xml文件添加到布局中。现在,当setContentView指向(R.layout.menu)时,我的一个类给出了错误。Eclipse告诉我R.layout.menu无法解析。我不知道为什么。我在布局文件夹中定义了一个称为菜单的布局。 有什么建议? 问题答案: 您是否执行过项目>清洁?有时,您只需要让Eclipse重新生成R文件即可。

  • 问题内容: 我是一个Java新手,因此遇到了这个问题。我尝试解码Json,为了做到这一点,我想导入这些包: “无法解决导入问题” …这些软件包是否不再可用,或者我是否需要做其他事情才能使它们起作用? 提前感谢。 问题答案: 可能您的简单json.jar文件不在您的类路径中。