web-dev-qa-db-de.com

Der Asp.net Core Post-Parameter ist immer null

Ich schicke POST vom Fiddler:

POST http://localhost:55924/api/Product HTTP/1.1
User-Agent: Fiddler
Host: localhost:55924
Content-Type: application/json; charset=utf-8
Content-Length: 84

{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}

Die Post-Methode wird jedoch immer null.

// POST api/Product
[HttpPost]
public IActionResult PostProduct([FromBody]Product product)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    _repo.Add(product);

    return CreatedAtRoute("GetToode",product);
}

Wenn ich [FormBody] verwende, ist das Produkt immer null, wenn es nicht verwendet wird, wird das Produkt bewertet, aber alle Felder sind null. Produktklasse ist einfach.

public class Product
{
    public int ProductID { get; set; }
    public string EAN { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int? CategoryID { get; set; }
}

ich habe versucht, NullValueHandling zu ConfigureServices hinzuzufügen, wie in post vorgeschlagen, aber keine Verwendung. 

services.AddMvc()
    .AddJsonOptions(jsonOptions =>
    {
        jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
    });
7
martinv

Ich musste nur die doppelten Anführungszeichen in Ihrer POST -Anfrage korrigieren und es hat funktioniert. Versuche dies:

{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}

Siehe Screenshot unten.

 Screenshot

4
Ignas

Hatte das gleiche Problem. Es stellte sich heraus, dass ich keinen öffentlichen parameterlosen Konstruktor für die Klasse der eingehenden Instanz hatte. In diesem Fall hatte Product nur geschützte Konstruktoren und der Parameter war immer gleich null. Hoffe es hilft jemandem.

0
Grumpy Android

Ich habe ein ähnliches Problem, aber ich hatte keine Überprüfung auf die Gültigkeit des ModelState als OP. In diesem Fall können Sie durch Überprüfen im Debug-Modus feststellen, was mit dem Modell nicht stimmt:

QuickWatch window

In diesem Beispiel habe ich eine ungültige Zeichenfolge 'A' Als Testwert für eine Guid -Eigenschaft verwendet, sodass das Modell immer null war.

0
jcespinoza