2017-08-17 21 views
1

私はC#を学んでいるので、私は辛抱してください。私は具体的であるように頑張ります。HTTPresponseMessage Web APIに改行を追加するC#

私たちはサードパーティのインスタントメッセンジャーを自宅で使用しています。彼らは、特定の情報を得るためにメッセンジャー内でスラッシュコマンドを実行する機能を追加しました。彼らの唯一のオプションは "/ weather"です。その郵便番号の現在の天気を表示します。

私はSQL Serverに含まれているユーザーに情報を提供するために内部的に使用したいと考えています。私のプルーフオブコンセプトプロジェクトは、/ discountsを使用して積極的な割引を引き出しています。その出力から、その割引で利用可能なアイテムを一覧表示するために入力/非表示を行うことができます。

私は、Visual Studioで作成したWeb APIを持っており、そのほとんどは私が望むように動作しています。私はいくつかのエラー報告を追加する必要がありますが、それ以外はかなり良いです。私の最大の問題は、ユーザーに見える出力です。 、 "11 - WILDBERRY香1"、 "15 - プレミアムシガーDISCOUNT - BUNDLE

[ " - - VAPE LIQUID 2 $ 2.00 8":

は、現在、私のWEBAPIと私はメッセンジャーに戻って、この形式をgetingています「 『16 - プレミアムシガーDISCOUNT』]

彼らはすべての少なくとも改行するために、私は希望」、「理想的には出力は次のようになります。

」8 - VAPE LIQUID - 2 $ 2.00 "

" 11 - WILDBERRY INCENSE 1 "

"15 - プレミアムシガーDISCOUNT - BUNDLE"

"16 - プレミアムシガーDISCOUNT" ここ

は私のAPIのContollerからコードです。

public class DiscountsController : ApiController 
{ 
    private DiscountsEntities db = new DiscountsEntities(); 

    [HttpPost] 
    public HttpResponseMessage Authenticate(FormDataCollection form) 
    { 
     var message = form.Get("Message"); 

     if (message == "/discounts") 
     { 

      var ReturnedDiscounts = from d in db.Discounts 
            where d.DiscountStartDate < DateTime.Now && d.DiscountStopDate >= DateTime.Now 
            orderby d.DiscountPriority ascending 
            select string.Concat(d.DiscountPriority, " - ", d.DiscountName); 

      HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK,ReturnedDiscounts); 
      response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); 


      return response; 

ご協力いただければ幸いです。

+0

交換しますか? 'ReturnedDiscounts.Replace(" \ "、"、 "\" "Environment.NewLine) - これはhtmlとしてレンダリングされることになり、代わりに'
'に置き換えられます。 @AlexK。 –

+0

'ReturnedDiscounts'は列挙可能です - WebAPIはコンマで区切られたリストに書式を設定しています。 EDIT:実際にはJSON配列にフォーマットされています –

+0

私は変数ReturnedDiscountsで置換前を使用しようとしましたが、結果ではなく実際のlinqクエリが返され続けました。クエリが表示されたとき、改行はなく、クエリの途中で/ r/nが表示されただけです。 – BobbyDigital

答えて

1

メッセージにオブジェクトを返す必要はありません。あなたはWebAPIの2を使用している場合は、それが同様に引用符を持っていないことを確認するためにこれを行うことができます

- どの:あなたはEDIT

var strResponse = string.Join("\n", ReturnedDiscounts); 

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, strResponse); 
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); 

return response; 

....文字列を返すことができます。おそらくより望ましい

var strResponse = string.Join("\n", ReturnedDiscounts); 

return Content(strResponse); 

それはあなたも行うことができます動作しない場合は...

return new HttpResponseMessage() 
{ 
    Content = new StringContent(strResponse, Encoding.UTF8, "text/html") 
}; 
+0

それは方法のため エラー\t CS1501 \tんが過負荷に参加していない好きに見えるdoesntの '参加' 1つの引数\t DiscountProject – BobbyDigital

+0

@BobbyDigital wrogn参加をとります。 'string.Join(" \ n "、ReturnedDiscounts)'を使用してください。 – Nkosi

+0

Nkosiに感謝してくれてありがとうございます。上記のように
を使用する必要がありました。実際の文字\ nを文字列の中に入れていました。 – BobbyDigital

関連する問題