Angular 7将两个或多个参数发送到ASP.NET服务器

时间:2019-04-23 05:18:00

标签: asp.net angular angular-httpclient

我是Angular的新手,我将Angular 7用作客户端,将ASP.NET用作服务器端。

我想传递两个以上的参数。我已经成功发送了一个参数。

这是我的Angular服务方法,它发送2个参数:

validate_user(user : Users, active: boolean): Observable<UsersError> {
    console.log(user);

    return this.http.post<UsersError>(this.users, user, active);
}

这是我的ASP.NET发布方法:

public UsersError Post([FromBody] sp_GetUsers_Result user, bool active)
{
        UsersError u = new UsersError
        {
            UserName = "Username Invalid",
            Password = "Password Invalid"
        };

        return u;
}

我知道我可以将参数包装到一个对象中并作为一个对象发送,但是我想知道是否有一种方法可以对两个或多个参数(对象)进行处理。

我尝试将HttpParams与各种组合一起使用,但是没有用。

2 个答案:

答案 0 :(得分:0)

.post中的第三个参数是httpOptions

示例:

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'my-auth-token'
  })
};

因此您需要更改此行:

return this.http.post<UsersError>(this.users, user, active);

active应该作为参数发送

关于asp.net:提交/发布必须与控制器中的对象匹配。

Asp.net将获取主体参数,并将尝试将其与控制器参数(fromBody)匹配。您不能将其与另一个参数(*)混合使用。

简而言之,您必须将active添加到服务器中的新模型。

*可以,但是还需要其他一些技巧-例如我构建的https://github.com/RoyiNamir/SimplePostVariableParameterBindingExtended

答案 1 :(得分:0)

BundleTypeAttributeView(users: string, Active: boolean, ): Observable<any> {
    const params = new HttpParams().set('users', users).set("Active", Active);
    return this.http.get<any>(this.endPoint + 'bundleTypeAttributes', { params });
}