2014-04-29 80 views
2

我有Durandal SPA,它在不同視圖中使用url.config.js文件。一堆網址到服務存儲在那裏。從客戶端js的web.config中讀取AppKey值SPA

代碼爲清楚:

define([], function() { 
    var serviceBaseUrl = 'http://localhost/Service/api/'; 
    var portalPortalUrl = 'http://localhost/Portal'; 
}); 

每當我需要部署我的應用程序,或者用不同的IIS設置運行它,我需要手動更改此網址的代碼。

我想要什麼:

將它們存儲在Web.config文件,這樣我就可以有不同的調試配置和發佈模式。

我正在使用MVC 5 Razor視圖僅用於渲染包和初始內容,所有客戶端邏輯放置在Durandal文件夾中。

我只發現使用ASP.NET ConfigurationManager像這樣的解決方案:

function ReadConfigurationSettings() 
{ 
    var k = '<%=ConfigurationManager.AppSettings["var1"].ToString() %>' 
    alert(k); 
} 

或者,剃刀:

@System.Configuration.ConfigurationManager.AppSettings["myKey"] 

這很酷,但不是我的方式。 也許有可能根據Web.config鑰匙自動生成我的urls.config.js文件? 預先感謝您。

如果需要的話,這裏是我的項目結構:

- App //Durandal SPA 
- Controllers 
- Views //Only render initial view 
- Web.config 

回答

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變數你可以在任何地方使用。

所以,你可以在url.config.js使用configServiceBaseUrl

define([], function() { 
    var serviceBaseUrl = configServiceBaseUrl; 
}); 
0

添加到satpal,爲SPA應用程序,例如角JS

對於SPA的,如角度,你可以使用下面的代碼您的index.html爲

<script type="text/javascript" src='/Controller/config'></script> 
相關問題