2017-01-31 3 views
0

Ich versuche, eine Web-API zu erstellen, die eine Eingabe erhält und versucht, Select-Abfrage in SQL-Datenbank auszuführen. Die Tabelle in der DB hat drei Felder, aber ich brauche nur zwei Felder in der response.Below ist der Code, den ichWeb-API, um Ergebnis von SQL-Datenbank

public async Task<IHttpActionResult> Get(string LabName){ 
string strcon = ConfigurationManager.ConnectionStrings["CDBConnection"].ConnectionString; 
SqlConnection DbConnection = new SqlConnection(strcon); 
SqlDataReader reader = null; 
DbConnection.Open(); 

using (SqlCommand command = new SqlCommand("SELECT Acc, CSeq FROM [dbo].[c_Account] WHERE Acc = @AccName", DbConnection)) 
{ 
    command.Parameters.Add(new SqlParameter("AccName", LabName)); 
    reader = command.ExecuteReader(); 
    List<QueryResult> qresults = new List<QueryResult>(); 

    while (reader.Read()) 
    { 
     QueryResult qr = new QueryResult(); 
     qr.AccountID = reader["AccountID"].ToString(); 
     qr.CounterSeq = ((int)reader["CounterSeq"]).ToString("000"); 
     qresults.Add(qr); 
    } 
    DbConnection.Close(); 
    //build json result 
    return Ok(qresults); 
} 
} 

Das Problem hier bin versucht, es zieht alle drei Felder in der Antwort als

[{"Acc":"xyz","CSeq":"123","Year":null}]

Aber erwarten nur die Antwort als

[{"Acc":"xyz","CSeq":"123"}]

ist es auch möglich zurückkehren die Antwort so etwas wie The CSeq associated with Acc xyz is 123

+0

Wo ist der Rest Ihres Codes? Der Code, der für das Erstellen des JSON verantwortlich ist (worüber du fragst), ist nicht hier. –

+0

@RobertHarvey - es ist in einer Web-API-Methode, die ein 'OkNegoiatedContentResult ' (über Methode Ok) zurückgibt, so dass der Aufrufer den Inhaltstyp mit dem HTTP-Header 'Content-Type' bestimmt. Web-API (mit der Standardkonfiguration) generiert automatisch ein JSON-Ergebnis vom übergebenen Modell mit json.net (ein anderer Standard) als Serializer. – Igor

Antwort

1

Ändern Sie bitte Ihre QueryResult Modell und fügen JsonIgnore auf die Eigenschaft Year.

public class QueryResult { 
    [JsonIgnore] 
    public int? Year {get;set;} // guessed the type 
    // the rest of your properties in the model 
} 

nahm ich an Sie verwenden json.net (Standardeinstellung) Serializer für Ihr Projekt web api.


Auch ist es möglich, die Antwort so etwas wie The CSeq associated with Acc xyz is 123

Sie haben würde zurückzukehren, um eine String-Eigenschaft zu Ihrem Modell hinzufügen, die sich zurück und Format, das Text wird. Es ist nichts in das Web-API-Framework eingebaut, das aus dem Nichts menschenlesbaren Text erzeugt. Es sollte wirklich eine Präsentation Layer-Funktion in Ihrem HTML/Skript und nichts auf dem Server obwohl sein.

Verwandte Themen