我正在创作由另一个 MVC 托管解决方案托管的 MVC 应用程序。来自客户端应用程序的 dll 被复制到托管应用程序的 bin 文件夹中。视图、视图/共享、脚本、内容……也都复制到托管项目中。在托管解决方案中,我创建了一个区域,它将作为任何客户端应用程序的基础,并通过预热例程动态创建到视图的路由。这部分效果很好。
但是,我的 javascript 包没有像我希望的那样呈现,我相信这是因为找不到它们的文件。在这个客户端应用程序中,我有两个 JS 文件......为简单起见,javascript1.js
和javascript2.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)文件?
谢谢!