如何在MVC中使用角度2来获取和发布动作

时间:2016-12-26 23:10:48

标签: asp.net-mvc angular

我是Angular 2的新手,想知道在调用get和post操作时如何在mvc项目中使用它:

假设我有一个带有2个动作的EmployeeController: 1)GetEmployee:列出员工信息 2)UpdateEmployee:更新员工信息

不使用Angular 2,我们可以轻松地使用视图来处理它。但是,如果我想使用Angular 2,我该怎么做?您能否提供一些示例,以便我可以学习如何使用Angular 2来调用获取或发布数据的操作?

由于

1 个答案:

答案 0 :(得分:0)

如承诺:

从Controller端:(控制器命名为 APIConnexionController.cs

[HttpGet]
public IActionResult Connexion(string aLogin, string aMdp)
{
   // Do your stuff
}

然后,您可以从Angular2服务或组件设置方法,以对控制器进行http调用,如下所示:

auth.service.ts (在我的情况下)

private controllerURL: string = "/APIConnexion/auth";

login(aLogin: string, aMdp: string) {
    // Setup parameters to send to ASP controller
    let params = new URLSearchParams();
    params.set("aLogin", aLogin);  // => Left side must match Controller method parameter
    params.set("aMdp", aMdp);

    // Setup the http request
    let lHttpRequestBody = params.toString();
    let lControllerAction: string = "/connexion/?";
    let lControllerFullURL: string = this.controllerURL + lControllerAction;

    // Call the ASP.NET controller : APIController
    return this.http.get(lControllerFullURL + lHttpRequestBody)
        .map((res: any) => {
            let data = res.json();

            // Manage cases
            switch (data.status) {
                case "success":
                    this.isLoggedIn = true;
                    this.lcLogin = aLogin;
                    break;
                case "error":
                    this.isLoggedIn = false;
                    throw new Error("Failure : " + data.message);
            }
        }
        ).catch(this.handleError);
}

然后只需将Angular2组件中的数据显示到模板HTML中,或者像我的login()方法一样执行一些操作:

// Manage authentication
login(username, password) {
    this.authService.login(username, password)
        .subscribe(() => {
            // Call the service Method
            if (this.authService.isLoggedIn) {
                // Redirect the user to master component
                this.router.navigate(['/master/dashboard']);
            }
        });
}