Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Asp.NETMVC中向Aurelia应用程序传递(调试与发布)参数_Javascript_Asp.net Mvc 4_Aurelia - Fatal编程技术网

Javascript 如何在Asp.NETMVC中向Aurelia应用程序传递(调试与发布)参数

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

您将如何向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 => { 
            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环境字符串添加设置。一旦我的头脑清醒了,它就工作得很好:-)

非常感谢!今晚我会尝试一下,如果有效的话,我会把它标记为答案。