【发布时间】: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 中看到值。