Javascript 角度Http Post到.Net核心
正在尝试从Angular向.net核心发送邮件。get操作可以顺利完成,但无法执行post操作。 当调试完成时,可以看到从未调用Api方法。 响应响应{u body:,状态:200,确定:true,状态文本:“确定”,标题:标题,} 控制器:Javascript 角度Http Post到.Net核心,javascript,angular,asp.net-core-webapi,Javascript,Angular,Asp.net Core Webapi,正在尝试从Angular向.net核心发送邮件。get操作可以顺利完成,但无法执行post操作。 当调试完成时,可以看到从未调用Api方法。 响应响应{u body:,状态:200,确定:true,状态文本:“确定”,标题:标题,} 控制器: [Produces("application/json")] [Route("api/[controller]")] public class StokKartsController : Controller { private readonly
[Produces("application/json")]
[Route("api/[controller]")]
public class StokKartsController : Controller
{
private readonly StokKartContext _context;
public StokKartsController(StokKartContext context)
{
_context = context;
}
[HttpGet("[action]")]
public IEnumerable<StokKart> deneme()
{
return _context.stok.ToList();
}
[HttpPost]
public IActionResult StokKartEkle([FromBody] StokKart stokKart)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_context.stok.Add(stokKart);
_context.SaveChanges();
return Json(stokKart);
}
}
打字稿:
import { Component, Inject, OnInit } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map';
@Component ({
selector: 'stokKarti',
templateUrl: './stokKarti.component.html',
styleUrls: ['./stokKarti.component.css']
})
export class StokKartiComponent implements OnInit {
stokKarts: IStokKart[];
stokKart: IStokKart;
headers: Headers;
http: Http;
options: RequestOptions;
baseUrl: string;
constructor(http: Http, @Inject('BASE_URL') baseUrl: string) {
this.http = http;
this.baseUrl = baseUrl;
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
}
ngOnInit() {
this.http.get(this.baseUrl + 'api/StokKarts/deneme').subscribe(result => {
this.stokKarts = result.json() as IStokKart[];
console.log(result);
}, error => console.error(error));
}
public urunKayit(e: any) {
//e.preventDefault();
//this.stokKart.urunKodu = e.path[12].getElementById("urunKodu").value;
//this.stokKart.urunTipi = e.path[12].getElementById("urunTipi").value;
let stoks: IStokKart = <IStokKart>{
"urunKodu": "U01",
"urunAdi": " ",
"urunGrubu": " ",
"ureticiKodu": " ",
"barkodKodu": 1,
"uretici": " ",
"urunTipi": " ",
"marka": " ",
"model": " ",
"birim": " ",
"kdv": 1,
"alisFiyati": 2.5,
"satisFiyati": 3.5
};
this.http.post(this.baseUrl + 'api/StokKarts/StokKartEkle', JSON.stringify(stoks), this.options)
.subscribe(res => console.log(res), error => console.error(error));
}
}
interface IStokKart {
urunKodu: string;
urunAdi: string;
urunGrubu: string;
ureticiKodu: string;
barkodKodu: number;
uretici: string
urunTipi: string;
marka: string;
model: string;
birim: string;
kdv: number;
alisFiyati: number;
satisFiyati: number;
}
从'@angular/core'导入{Component,Inject,OnInit};
从'@angular/Http'导入{Http,Headers,RequestOptions};
导入'rxjs/add/operator/map';
@组成部分({
选择器:“stokKarti”,
templateUrl:'./stokKarti.component.html',
样式URL:['./stokKarti.component.css']
})
导出类StokkartComponent实现OnInit{
Stokkart:IStokKart[];
斯托卡特:伊斯托卡特;
标题:标题;
http:http;
选项:请求选项;
baseUrl:字符串;
构造函数(http:http,@Inject('BASE_URL')baseUrl:string){
this.http=http;
this.baseUrl=baseUrl;
let headers=新的头({'Content-Type':'application/json'});
let options=newrequestoptions({headers:headers});
}
恩戈尼尼特(){
this.http.get(this.baseUrl+'api/StokKarts/deneme')。订阅(结果=>{
this.stokkart=result.json()作为IStokKart[];
控制台日志(结果);
},error=>console.error(error));
}
公共urunKayit(e:any){
//e、 预防默认值();
//this.stokKart.urunKodu=e.path[12].getElementById(“urunKodu”).value;
//this.stokKart.urunTipi=e.path[12].getElementById(“urunTipi”).value;
let stoks:IStokKart={
“urunKodu”:“U01”,
“urunAdi”:“,
“urunGrubu”:“,
“ureticiKodu”:“,
“巴尔科多”:1,
“uretici”:“,
“urunTipi”:“,
“marka”:“,
“范本”:“,
“birim”:“,
“kdv”:1,
“alisFiyati”:2.5,
“满足感”:3.5
};
this.http.post(this.baseUrl+'api/StokKarts/StokKartEkle',JSON.stringify(stoks),this.options)
.subscribe(res=>console.log(res),error=>console.error(error));
}
}
接口IStokKart{
乌伦科杜:字符串;
乌鲁纳迪:弦;
乌龙鲁布:弦;
ureticiKodu:字符串;
巴尔科多:数字;
uretici:字符串
乌伦蒂皮:弦;
marka:字符串;
模型:字符串;
比里姆:弦;
kdv:数量;
alisFiyati:编号;
满意度:数字;
}
我发现您的属性不可为null,因此如果您想要接收null或空格,您应该如下设置您的类:
public class StokKart
{
[Key]
public string urunKodu { get; set; }
public string? urunAdi { get; set; }
public string? urunGrubu { get; set; }
public string? ureticiKodu { get; set; }
public int barkodKodu { get; set; }
public string? uretici { get; set; }
public string? urunTipi { get; set; }
public string? marka { get; set; }
public string? model { get; set; }
public string? birim { get; set; }
public int kdv { get; set; }
public float alisFiyati { get; set; }
public float satisFiyati { get; set; }
//public bool? serinoTakibiYap { get; set; }
}
由于angular应用程序中有一个接口,您可以设置IStockart类型的post方法,如下所示(如果我错了,请纠正我,我注意到API中的端点与angular不匹配,因此我将其更改为angular端):
let stoks:IStokKart={
“urunKodu”:“U01”,
“urunAdi”:“,
“urunGrubu”:“,
“ureticiKodu”:“,
“巴尔科多”:1,
“uretici”:“,
“urunTipi”:“,
“marka”:“,
“范本”:“,
“birim”:“,
“kdv”:1,
“alisFiyati”:2.5,
“满足感”:3.5
};
this.http.post(this.baseUrl+'api/StokKarts',stoks,this.options)
.subscribe(res=>console.log(res),error=>console.error(error));
希望您会觉得这很有用。您是否考虑过这可能是CORS的问题?请尝试简单地发送“stoks”-而不是“JSON.stringify(stoks)”-您的帖子需要一个对象-。顺便说一句,您必须考虑使用新的HttpClient而不是旧的HtppI,我认为这可能是CORS的问题。[link]我在这些教程中一步一步地做了这些步骤。我尝试简单地发送“stoks”。但没有解决方案。正确,但仍然在web api中,您应该通过添加询问标记来指定值是否可以为null。
public class StokKart
{
[Key]
public string urunKodu { get; set; }
public string? urunAdi { get; set; }
public string? urunGrubu { get; set; }
public string? ureticiKodu { get; set; }
public int barkodKodu { get; set; }
public string? uretici { get; set; }
public string? urunTipi { get; set; }
public string? marka { get; set; }
public string? model { get; set; }
public string? birim { get; set; }
public int kdv { get; set; }
public float alisFiyati { get; set; }
public float satisFiyati { get; set; }
//public bool? serinoTakibiYap { get; set; }
}
let stoks: IStokKart = {
"urunKodu": "U01",
"urunAdi": " ",
"urunGrubu": " ",
"ureticiKodu": " ",
"barkodKodu": 1,
"uretici": " ",
"urunTipi": " ",
"marka": " ",
"model": " ",
"birim": " ",
"kdv": 1,
"alisFiyati": 2.5,
"satisFiyati": 3.5
};
this.http.post<IStokKart>(this.baseUrl + 'api/StokKarts', stoks, this.options)
.subscribe(res => console.log(res), error => console.error(error));