C#消耗Angular 4类

时间:2017-07-12 06:21:40

标签: c# angular typescript

我将在C#web Api中使用以下请求。

这是我的要求:

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解析为auth。我的json字符串获取发送目前看起来像这样。

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

如果只是

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

然后它没有任何问题。但是我需要它来消耗第一个json示例

3 个答案:

答案 0 :(得分:1)

  

关于在c#中接收整个班级。

你不会得到。建议的电汇是JSON,它只会为您提供对象属性。

更多

查找JSON序列化。互联网上充满了C#+ AngularJS的例子。

答案 1 :(得分:0)

阿诺,

您应该在web api方法中收到一个json对象。

然后使用Json.Net将您的json对象转换为您想要的C#对象。

希望它有所帮助。

答案 2 :(得分: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);