【问题标题】:how to send angular class instance to web api httpget action C# [duplicate]如何将角度类实例发送到web api httpget action C# [重复]
【发布时间】:2020-09-08 18:56:01
【问题描述】:

我有这样的角度课

export class UserSearch {
     firstName: string;
     lastName: string;
     city: string;
     stateCode: string;
}

我想将带有数据的 UserSearch 实例从 Angular 发送到 web api。 我使用了以下两种不同的方式,但仍然没有运气。我总是可以在 web api 上看到 null 。 角度服务中的代码:

getSearchResults() {
var request: UserSearch = {} as any;
request.firstName='fName';
request.lastName='lName';
request.city='city1';
request.stateCode='sCode';
            
var params = new HttpParams().append('searchRequest', JSON.stringify(request));
return this.http.get('https://localhost:44348/api/userSearchResults/search', params);
}

如果我使用上述过程,Api 将收到 null。 所以,我试过如下:

getSearchResults() {
var request: UserSearch = {} as any;
request.firstName='fName';
request.lastName='lName';
request.city='city1';
request.stateCode='sCode';
            
 return this.http.get(`https://localhost:44348/api/userSearchResults/search?searchRequest=${request}`);
                    }

但还是没有运气,web api action 方法仍然收到 null。

这是我的 web api 操作方法:

[HttpGet, Route("search")]
public IActionResult Search(UserSearch searchRequest) {
return Ok(_service.GetSearchResults(searchRequest));
}

C# web api 中的 UserSearch 类如下所示:

public class UserSearch {
public string firstName {get; set;}
public string lastName {get; set;}
public string city {get; set;}
public string stateCode {get; set;}
}

从角度将带有数据的类实例发送到 Web api 控制器的最佳方法是什么? 有人可以通过代码让我在哪里做错了吗? 提前致谢。

【问题讨论】:

  • 你需要设置标题和选项如下: var headers = new HttpHeaders(); headers.append('Content-Type', undefined); const httpOptions = { headers: headers, reportProgress: true };
  • 大家好,我个人认为 modelbinder 概念不是一个好主意,因为我们需要在 startup.cs 文件中为我们将在应用程序中创建的每个视图模型添加一个条目。这不是一个好主意。无论如何,我找到了一个简单的解决方案:我在 Angular 服务中所做的唯一更改,您可以在我的下一条评论中看到,因为此评论框中没有空格可以留下我的代码 sn-p。
  • 这是我的解决方案: getSearchResults(request: UserSearch) { var params = new HttpParams().set('firstName', request.firstName).set('lastName',request.lastName) 。 set('city',request.city).set('stateCode',request.stateCode);返回 this.http.get('localhost:44348/api/userSearchResults/search', params);有了这个我可以在 web api action nmethod 中看到值。

标签: c# angular webapi


【解决方案1】:

尝试使用 [FromUri],如下所示:

public IActionResult Search([FromUri] UserSearch searchRequest)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多