0

我使用 MVC 3 + Contrib Project PortableAreas 将我的网站拆分为多个项目。现在我转移到 MVC 4 并想为我的 css 和 JS 使用新的功能缩小。

但是当我这样做时:

<link href="@Url.Content("~/DSB/Styles/CSS")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/common/js")" type="text/javascript">

代替:

<link href="@Url.Content("~/DSB/Styles/Site.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/themes/smoothness/jquery-ui-1.8.12.custom.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/common/jquery-1.4.4.min.js")" type="text/javascript" />
<script src="@Url.Content("~/Scripts/common/jquery-ui-1.8.11.custom.min.js")" type="text/javascript"></script>

这没用。如何在便携式区域中使用捆绑/缩小?

谢谢

4

1 回答 1

1

这里的问题是捆绑和缩小除了实际文件之外没有预见到处理任何其他内容。我在这里有两个可行的解决方案。

将文件提取到临时文件中 - 需要对应用程序中的文件夹具有写入权限。是处理该问题的代码。它使用一个名为“Static”的目录作为临时目标路径。你可以像这样使用它:

bundles.Add(new Rebundler(assemblyWithPortableArea, "~/VirtualPathUsedForResource")
                .Include("Fully.Qualified.Embeded.Resource.Name", "other...")
                .Rebundle());

在模板中使用它就像在非便携式应用程序中使用它一样,所以 @Scripts.Render() 或 @Styles.Render()

另一个解决方案涉及创建一组允许您使用嵌入资源的类。是基类,这里是脚本样式包。这是用法:

bundles.Add(new EmbededStyleBundle(assemblyWithPortableArea, "~/VirtualPathUsedForResource")
                .Include("~/AreaName/Content/themes/custom/jquery-ui.css"));

使用这种方法,您需要使用此类来呈现资源。因此,模板代码不是使用 @Scripts.Render() 或 @Styles.Render() ,而是如下所示:

@Assets.RenderStyles("virtual path here")
@Assets.RenderScripts("virtual path here")

请注意,此代码远非干净。它主要是逆向工程,可能会跳过一些路径,但到目前为止它似乎工作。

于 2012-12-10T14:57:26.817 回答