0

我正在创作由另一个 MVC 托管解决方案托管的 MVC 应用程序。来自客户端应用程序的 dll 被复制到托管应用程序的 bin 文件夹中。视图、视图/共享、脚本、内容……也都复制到托管项目中。在托管解决方案中,我创建了一个区域,它将作为任何客户端应用程序的基础,并通过预热例程动态创建到视图的路由。这部分效果很好。

但是,我的 javascript 包没有像我希望的那样呈现,我相信这是因为找不到它们的文件。在这个客户端应用程序中,我有两个 JS 文件......为简单起见,javascript1.jsjavascript2.js. 它们位于我的客户端应用程序的脚本文件夹中:C:\MyClientApp\Scripts\*.js. 编译后,构建后事件会将文件复制到托管解决方案:C:\MyHostingApp\Scripts\MyClientApp\*.js.

在应用程序启动中(也在预热例程中完成),我的包被构建:

[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(MyClientApp.AppStart), "Start")]

namespace MyClientApp
{
    public static class AppStart
    {
        public static void Start()
        { 
            ConfigureBundles();
        }  

        private static void ConfigureBundles()
        {
            var bundle = new ScriptBundle("~/MyClientApp/Js")
                .Include("~/Scripts/javascript1.js")
                .Include("~/Scripts/javascript2.js");

            BundleTable.Bundles.Add(bundle); 
        }
    }    
}

在我看来,我想打电话给@Scripts.Render("~/MyClientApp/Js"). 但这不起作用,没有渲染任何内容。我的假设是它在应用程序的根目录下寻找那个包,而不是在MyClientApp. 为了正确定位捆绑包,我尝试编写一个 HtmlHelper 扩展来解析捆绑包......尽管我能做的最好的是将捆绑包名称解析到我的源代码中,最终似乎必须有一个更简单的方法来实现这一点。关于如何渲染这些捆绑包的任何想法?我可以用路由引擎做些什么,类似于 Views 来定位 JS(以及最终的 css)文件?

谢谢!

4

1 回答 1

2

捆绑当前使用 VirtualPathProvider 来查找捆绑的文件。内置的 VirtualPathProvider 只知道应用程序中的文件。如果您希望能够引用应用程序外部的文件,您可以尝试实现自己的 VPP,该 VPP 可以检索应用程序外部的文件。

于 2013-07-29T17:24:26.467 回答