【发布时间】:2014-11-17 00:47:56
【问题描述】:
我想使用 ASP.NET MVC 5 自动生成一些 JavaScript 文件,并在其 URL 中使用适当的 .js 扩展名。
这是我的问题;
我在整个网站中都使用require.js,它运行良好。然而,并不是我所有的 JavaScript 文件都是磁盘上的真实文件。其中一些必须在运行时生成。所以我写了一个控制器来生成动态 JavaScript 文件,并在使用默认路由时为它们提供服务;
// ~/Resource/CommonRes -- from ResourceController.CommonRes()
define([], function() {
return {
"menuItemConfiguration":"Configuration",
"menuItemAdmin":"Admin",
"manageAccount":"Manage Account",
"logOff":"Log off"
...
};
});
但是,我需要将路由作为~/Scripts/Resources/CommonRes.js 提供——.js 扩展至关重要,因为我实际上返回了一个require.js 模块,以便像这样调用;
require(['Resources/CommonRes'], function(commonRes) {
// code the uses the resource file
});
在这种情况下,名为Resources/CommonRes 的模块将始终在~/Scripts/Resources/CommonRes.js 中查找。因此需要使用该扩展来提供它。
我似乎无法正确路由。我尝试了以下方法,但无济于事;
routes.MapRoute(
name: "Resource Scripts",
url: "Scripts/Resource/{action}",
defaults: new { controller = "Resource" },
namespaces: new string[] { "AITrackRecord.Controllers" }
);
【问题讨论】:
标签: javascript asp.net-mvc requirejs asp.net-mvc-routing url-routing