Javascript 角度Http Post到.Net核心

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

正在尝试从Angular向.net核心发送邮件。get操作可以顺利完成,但无法执行post操作。 当调试完成时,可以看到从未调用Api方法。 响应响应{u body:,状态:200,确定:true,状态文本:“确定”,标题:标题,}

控制器:

[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));