【发布时间】:2020-05-22 23:20:16
【问题描述】:
我无法让我的客户端发送数据并且我的控制器接受带有发送值的数据。
在客户端中,我可以 console.log 这些值,它们会按预期显示。我的 PUT(编辑项)控制器使用几乎相同的逻辑(除了不传递 ID)运行得非常好。我已经尝试了几乎所有我能想到的尝试让 POST 显示我传递给它的数据,但无济于事。我错过了一些关键的步骤吗?我已经搜索过堆栈溢出,人们似乎也有类似的问题,但到目前为止,没有一个解决方案对我有用。
[Route("add")]
public void Post(ItemsViewModel model)
{
var item = new Item()
{
Name = model.Name,
Classification = model.Classification,
DatabaseLink = model.DatabaseLink,
IsBis = model.IsBis,
ItemType = model.ItemType,
Phase = model.Phase,
PrimaryPrice = model.PrimaryPrice,
Priority = model.Priority,
Slot = model.Slot,
Source = model.Source
};
if (item != null)
{
_unitOfWork.Items.Add(item);
_unitOfWork.SaveChanges();
}
}
对于客户...
console.log(this.addItemForm.getRawValue());
this.http.post(`api/items/add`, this.addItemForm.getRawValue()).subscribe(res => {
控制台读取...
id: 0
phase: 1
name: "dasdad"
classification: "dsadad"
source: "qdsadasd"
slot: "dasdasd"
itemType: "sdasdsa"
isBis: true
primaryPrice: "1.112"
priority: "sadasdada"
databaseLink: 12345
我的编辑项目控制器 (PUT) 工作正常,但添加控制器却不行。
this.http.put(`api/items/update/${this.editItemForm.getRawValue().id}`, this.editItemForm.getRawValue()).subscribe(res => {
[Route("update/{id}")]
public void Put(int id, [FromBody]ItemsViewModel model)
{
var item = _unitOfWork.Items.Get(id);
if (item != null)
{
item.Name = model.Name;
item.Classification = model.Classification;
item.DatabaseLink = model.DatabaseLink;
item.IsBis = model.IsBis;
item.ItemType = model.ItemType;
item.Phase = model.Phase;
item.PrimaryPrice = model.PrimaryPrice;
item.Priority = model.Priority;
item.Slot = model.Slot;
item.Source = model.Source;
_unitOfWork.Items.Update(item);
_unitOfWork.SaveChanges();
}
}
如果有人可以帮助诊断,那就太好了,已经卡了好几天了。
我已经尝试了几件事...使用 [FromBody] 转换为 JSON 对象,在模型中添加一个 ctor,即视图模型。在客户端中创建一个 Item 对象并以这种方式将 Web 客户端传递给控制器,等等……它总是在断点处到达控制器,但是无论我尝试什么参数中的模型,那里的所有数据都是null 或默认 0。
【问题讨论】:
标签: angular asp.net-core asp.net-web-api