2017-08-03 1 views
0

Ich möchte Werte übergeben, die Modell als Parameter verwenden. Dies ist im Grunde die mvc web api AppSo übergeben Sie Modellwerte in einem Parameter

Das ist mein Modell Klasse ist

public class ConversionModel 
{ 
    public double value { get; set; } 
    public int qty { get; set; } 
    public double result { get; set; } 
    public string from { get; set; } 
    public string to { get; set; } 
} 

Dieser Mein Controller-Code ist

[HttpGet] 
[Route("api/Conversion/Currency")] 
public double Currency(ConversionModel c) 
{ 
    return c.value; 
} 

Und meine url ist

http://localhost:5267/api/Conversion/Currency?value=123

aber zeigt mir ein Fehler

Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

+0

Wissen Sie, was ein 'NullReferenceException' ist? – mason

+0

senden Sie die Daten Ihres Conversion-Modells, wenn Sie diese Currency() -Aktion aufrufen? – hasan

+0

@hsnbl Ich wollte nur 123, die ich von url – Ahmed

Antwort

0

Sie stellen nur einen Integer-Wert bereit, der nicht in ConversionModel konvertiert werden kann.

können Sie entweder Post

[HttpPost] 
public double Currency([FromBody]ConversionModel c) 

, die für eine komplexe Aufgabe besser geeignet ist.

Oder übergeben Sie die Werte als separate get-Parameter und erstellen Sie ein ConversionModel im Methodenrumpf.

Oder verwenden Sie get mit [FromUri]; Dies erfordert immer noch die Bereitstellung aller individuellen Parameterwerte. (siehe here)

Das Übergeben einer Sammlung von einzelnen Werten ist ein wenig zerbrechlich/ungeschickt, ich würde es vorziehen, Post zu verwenden. Abgesehen davon ist es unwahrscheinlich, dass Sie alle Werte und eine Instanz der Klasse benötigen, wenn Sie einfach einen doppelten Wert zurückgeben, also ist es am wahrscheinlichsten, dass post angemessen ist.

+0

so wie kann ich den Wert übergeben, tatsächlich die Wert-Eigenschaft in Modell ist Integer. – Ahmed

+0

Wenn Sie nur den Ganzzahlwert "Wert" übergeben möchten, deklarieren Sie den Parameter als Ganzzahl. –

0

Sie können kein Objekt in der Abfragezeichenfolge übergeben. Sie müssen alle Parameter in Ihre Route-Annotation schreiben.

[Route("api/Conversion/Currency/{value}/{qty}/{result}/{from}/{to}")] 

Und dann in Ihre Aktion:

public double Currency(double value, int qty, double result, string from, string to) { 
    var conversionModel = new ConversionModel(); 
    conversionModel.value = value; 
    conversionModel.qty = qty; 
    conversionModel.result = result; 
    conversionModel.from = from; 
    conversionModel.to = to; 

    // Rest of your code. 
} 
Verwandte Themen