2017-01-31 7 views
0

SQLデータベースでSelectクエリを実行しようとするWeb APIを作成しようとしています。 DB内のテーブルには3つのフィールドがありますが、私はresponse.Belowに2つのフィールドのみを必要とする、私はここでの問題は、それがSQLデータベースから結果を返すWeb API

として応じて3つのすべてのフィールドを引くです

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

をしようとしていますコードです[{"Acc":"xyz","CSeq":"123","Year":null}]

しかし、単に

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

として応答を期待することも戻ることが可能です応答The CSeq associated with Acc xyz is 123

+0

残りのコードはどこにありますか? JSONを作成するコード(あなたが尋ねるもの)はここにはありません。 –

+0

@RobertHarvey - 呼び出し元がhttpヘッダー 'content-type'でコンテンツタイプを判断できるように、' OkNegotiatedContentResult 'を(メソッドOkで)返すWeb APIメソッド内の@RobertHarveyです。 Web API(デフォルト設定)は、シリアライザとしてjson.net(別のデフォルト)を使用して渡されたモデルから自動的にjson結果を生成します。 – Igor

答えて

1

QueryResultモデルを変更し、JsonIgnoreをプロパティYearに追加します。

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

ウェブAPIプロジェクトでjson.net(デフォルト)シリアライザを使用していると仮定しています。


また、それはあなたが返されるモデルと自分をテキスト形式に文字列プロパティを追加する必要がありますThe CSeq associated with Acc xyz is 123

のような応答に何かを戻すことができます。薄い空気から人間が読めるテキストを作成するWeb APIフレームワークには何も組み込まれていません。それは本当にあなたのHTML /スクリプトに組み込まれたプレゼンテーション層の機能でなければなりません。

関連する問題