2017-08-17 104 views
1

我要开始说,请耐心等待,因为我正在学习C#,并且我会尽我所能做到具体。向HTTPresponseMessage Web API添加换行符C#

我们在房子里使用第三方即时通信软件。他们增加了在Messenger中执行斜线命令以获取特定信息的功能。他们只有开箱即用的选项是“/ weather”,为您提供该邮递区号的当前天气。

我想在内部使用它来向我的用户提供那些包含在我们的SQL Server中的信息。我的概念证明项目是使用/折扣拉动活动折扣,并且可以通过输入/不赞成来列出该折扣中可用的项目。

我有在Visual Studio中创建的web api,并且大多数情况下它的工作正如我所愿。我需要添加一些错误报告,但除此之外它工作得很好。我最大的问题是用户看到的输出。

目前我的WebAPI我歌厅这种格式回到信使:

[ “8 - VAPE液体 - 2 $ 2.00”, “11 - WILDBERRY INCENSE 1”,“15 - 优质雪茄折扣 - 捆扎“‘16 - 优质雪茄折扣’]

我想他们是一个换行符至少,每一个”,“理想情况下,输出将是:

” 8 - VAPE液体 - 2 $ 2.00 “

”11 - WILDBERRY INCENSE 1“

“15 - 优质雪茄折扣 - 套餐”

“16 - 优质雪茄折扣”

这里是我的API位指示的代码。

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。 –

+0

@AlexK。 'ReturnedDiscounts'是一个可枚举的--WebAPI将其格式化为逗号分隔列表。编辑:实际上它被格式化成一个JSON数组 –

+0

我试图用变量ReturnedDiscounts替换之前,但它一直返回实际的LINQ查询而不是结果。当它显示查询时没有任何换行符时,它只在查询中显示/ r/n。 – BobbyDigital

回答

1

您不必在消息中返回对象。你可以只返回一个字符串....

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

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

return response; 

编辑:

如果您正在使用的WebAPI 2,你可以做到这一点,以确保它没有报价,以及 - 这可能是更理想的

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

return Content(strResponse); 

如果不工作,你也可以做......

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

它不出现像加入 错误\t CS1501 \t没有重载方法“加入”需要1个参数\t DiscountProject – BobbyDigital

+0

@BobbyDigital wrogn加入。使用'string.Join(“\ n”,ReturnedDiscounts)' – Nkosi

+0

感谢Nkosi纠正了这一点。如上所述,我最终不得不使用
。它将字符串中的实际字符放在结果中。 – BobbyDigital