从客户端js SPA中的web.config读取AppKey值

时间:2014-04-29 09:13:29

标签: javascript asp.net-mvc razor web-config durandal

我有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

2 个答案:

答案 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>