我遇到了一个MVC捆绑应该基于Query字符串值发生的场景。
我正在使用文件夹捆绑文件夹中的所有* .js。我的查询字符串将具有基于该名称的子文件夹名称,我只需要在该文件夹中捆绑js文件。因此,即使我们在运行时添加任何文件夹并在URL中提供该应用程序,该应用程序也应该能够在该文件夹中加载js文件。基本上我正在寻找什么来读取bundle.config中的查询字符串,并使包动态的文件夹名称
正在寻找的是
bundles.Add(new ScriptBundle("~/bundles/folderbundle")
.IncludeDirectory("~/JS/"+ [FoldernamefromQueryString] +", "*.js", true)
);
提前感谢您的帮助。
答案 0 :(得分:1)
经过几个小时的搜索,我得到了一些我正在寻找的东西,你必须更改Global.asax中的代码
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
//BundleConfig.RegisterBundles(BundleTable.Bundles);
BundleTable.EnableOptimizations = true;
}
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
var handler = Context.Handler as MvcHandler;
if (handler != null)
{
var routeData = handler.RequestContext.RouteData;
var moduleName = !string.IsNullOrWhiteSpace(HttpContext.Current.Request.QueryString["ModuleName"]) ? HttpContext.Current.Request.QueryString["ModuleName"] : "Module";
BundleConfig.RegisterBundles(BundleTable.Bundles, moduleName);
}
}
}
并在bundle.config
中namespace RouteBundling
{
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles, string moduleName = "")
{
if (moduleName == "Module")
{
bundles.Add(new ScriptBundle("~/bundles/module").IncludeDirectory("~/Scripts/Module/", "*.js", true));
}
else
{
bundles.Add(new ScriptBundle("~/bundles/module").IncludeDirectory("~/Scripts/Module/" + moduleName + "/", "*.js", true));
}
}
}
}
这对我来说几乎完成了这项工作。谢谢