2017-07-12 49 views
0

hou我會在我的C#web Api中使用以下請求。C#消費Angular 4類

這裏是我的要求:

this._http.post(
     this.url + 'api/Test', 
     { auth: this.authClass}, 
     { headers: this.header } 
    ).map(
     (res) => res.json() 
    ).subscribe(
     (res) => { 
     console.log("VALUE RECEIVED: ", res); 
     }) 

這裏是我的AuthClass:

export class Auth{ 
    username:string = ""; 
    password:string = ""; 
} 

我有同樣的類在C#和需要知道我怎麼去接受這個類作爲一個整體在C#中。

我想:

[HttpPost] 
public IHttpActionResult login(HttpRequestMessage request) 
{ 
    var jsonString = await request.Content.ReadAsStringAsync(); 
    var model = JsonConvert.DeserializeObject<auth>(jsonString); 
    return Ok(); 
} 

我的問題是,它無法解析JSON要權威性。我的json字符串發送目前看起來像這樣。

{ 
    "auth": { 
     "username": "admin", 
     "password": "admin1" 
    } 
} 

如果它只是

{ 
    "username": "admin", 
    "password": "admin1" 
} 

然後它沒有任何問題。但我需要它消耗第一個json示例

+0

未使用角2,但可以直接發佈,而不是由另一屬性這樣warpped對象: 交( this.url + '認證/註冊', this.regClass ) – aspark

回答

1

關於在c#中接收整個類。

您不會得到。建議的電匯是JSON,它只會給你對象屬性。

更多

查找JSON序列化。互聯網上充滿了C#+ AngularJS的例子。

0

阿諾,

你應該在你的Web API方法接收一個JSON對象。

然後使用Json.Net將你的json對象轉換爲你想要的C#對象。

希望它有幫助。

0

所以答案就是將auth類包裝到另一個類中。

public class authReq 
{ 
    public auth request { get; set; } 
} 

public class auth 
{ 
    public string username { get; set; } 
    public string password { get; set; } 
} 

然後我像這樣反序列化authReq。

var model = JsonConvert.DeserializeObject<register>(jsonString);