我有Durandal SPA,它在不同的视图中使用url.config.js
文件。服务的一堆网址存储在那里。
清晰的代码:
define([], function () {
var serviceBaseUrl = 'http://localhost/Service/api/';
var portalPortalUrl = 'http://localhost/Portal';
});
每当我需要部署我的应用程序或使用不同的IIS设置运行它时,我需要在代码中手动更改此URL。
我想要的是什么:
要将它们存储在Web.config
文件中,以便我可以为调试和发布模式配置不同的配置。
我只使用MVC 5 Razor视图来渲染包和初始内容,所有客户端逻辑都放在Durandal
文件夹中。
我只使用ASP.NET ConfigurationManager
找到解决方案,如下所示:
function ReadConfigurationSettings()
{
var k = '<%=ConfigurationManager.AppSettings["var1"].ToString() %>'
alert(k);
}
或者,对于Razor:
@System.Configuration.ConfigurationManager.AppSettings["myKey"]
很酷,但不是我的方式。
也许可以根据urls.config.js
密钥自动生成我的Web.config
文件?
先感谢您。
如果需要,这是我的项目结构:
- App //Durandal SPA
- Controllers
- Views //Only render initial view
- Web.config
答案 0 :(得分:4)
您可以使用JavaScriptResult
将JavaScript内容发送到响应。
代码,控制器操作方法
public JavaScriptResult Config()
{
var script = string.Format(@"var configServiceBaseUrl = {0};", ConfigurationManager.AppSettings["var1"]);
return JavaScript(script);
}
在页面标题中(我首先加载文件),您可以定义:
<script type="text/javascript" src='@Url.Action("Config", "Controller")'></script>
现在configServiceBaseUrl
是全局JavaScript变量,您可以在任何地方使用它。
因此,您可以在configServiceBaseUrl
中使用url.config.js
define([], function () {
var serviceBaseUrl = configServiceBaseUrl;
});
答案 1 :(得分:0)
添加到satpal, SPA 应用程序,例如 angular js
对于SPA,例如angular,您可以在index.html中的代码下面使用
<script type="text/javascript" src='/Controller/config'></script>