Javascript 如何在Asp.NETMVC中向Aurelia应用程序传递(调试与发布)参数
您将如何向Aurelia应用程序传递调试参数和发布参数 在我的例子中,我有一个MVC应用程序中的Aurelia。我想根据我的web.config值为Aurelia配置一些参数(URL等) 我有没有办法做到这样的事情:Javascript 如何在Asp.NETMVC中向Aurelia应用程序传递(调试与发布)参数,javascript,asp.net-mvc-4,aurelia,Javascript,Asp.net Mvc 4,Aurelia,您将如何向Aurelia应用程序传递调试参数和发布参数 在我的例子中,我有一个MVC应用程序中的Aurelia。我想根据我的web.config值为Aurelia配置一些参数(URL等) 我有没有办法做到这样的事情: loadConfig() { let self = this; let url = 'api/config'; let req = new HttpClient(); return req.get(url) .then(result
loadConfig() {
let self = this;
let url = 'api/config';
let req = new HttpClient();
return req.get(url)
.then(result => {
return applyConfig(result);
});
}
function applyConfig(responseMessage) {
if (responseMessage.statusCode === 200) {
self.appConfig = JSON.parse(responseMessage.response);
} else {
self.appConfig = {
// Apply some defaults or something here
};
}
return self.appConfig;
}
}
System.import('aurelia-bootstrapper',@this.ViewBag.MyArgs);
其中this.ViewBag.MyArgs将包含从MVC加载的参数
然后我可以在我的Aurelia服务中使用这些参数,比如
this.httpClient.configure(x=>{
x、 withBaseUrl(globalArgs.myBackendUrl);
});
将配置字符串注册为模块:
index.html
//注册一个名为“my args”的模块,该模块有一个导出:“MyArgs”,其值是viewbag.MyArgs包含的任何内容。。。
System.set('my-args',System.newModule({MyArgs:'@this.ViewBag.MyArgs'}));
//标准引导逻辑。。。
System.import('aurelia-bootstrapper');
这里假设razor会将{MyArgs:'@this.ViewBag.MyArgs'}
扩展到@this.ViewBag.MyArgs
返回的任何内容中。。。例如{MyArgs:'debug=true'}
或其他什么。。。你得扮演那个角色
然后,在javascript代码中,您可以访问如下参数:
从“我的args”导入{MyArgs};
这是一个正在工作的plunker:
以下是系统上的文档。设置API:
我意识到这一点已经得到了回答,但我有另一个建议,可能会证明是有用的
我们希望根据调试或发布版本使用不同的Breeze url,最后在MVC应用程序中制作了一个ConfigController。这将根据服务器配置返回具有适当设置的json对象。然后在Aurelia客户端中,我们有一个配置模块,它使用http客户端调用MVC端点,并根据需要设置客户端参数
ConfigController非常简单,如下所示:
[HttpGet]
public IDictionary<string, object> Get()
{
return new Dictionary<string, object> {
{ "Application Name", "My app name" },
{ "Debug", true }
{ "APIHost", ApiSettings.APIHost },
{ "APIBaseURL", ApiSettings.APIBaseURL },
{ "LoginURL", ApiSettings.LoginURL }
};
}
这样做的好处之一是很容易从Azure web app环境字符串添加设置。一旦我的头脑清醒了,它就工作得很好:-)非常感谢!今晚我会尝试一下,如果有效的话,我会把它标记为答案。