2015-01-27 2 views
1

У меня есть C# класс, который преобразует XSLT в HTML, используя этот код:возвращаемая строка с сервера содержит т г п

public class MyXslTransform 
{ 
    public XslTransform(string styleSheetPath) 
    { 
     Xslt = new XslCompiledTransform(); 
     Xslt.Load(StyleSheetPath); 
    } 

    public string TransformToString(XmlDocument doc) 
    { 

     using (var sw = new StringWriter()) 
     { 
      XmlReader reader = new XmlNodeReader(doc); 
      Xslt.Transform(reader, null, sw); 
      string html = sw.ToString(); 
      return html; 
     } 
    } 
    private XslCompiledTransform Xslt { get; set; } 
} 

я вернуть HTML строку как тип строки в веб-контроллера. Но когда он приходит в браузер, я получаю массу: \t \r\n \" и т. Д. Как я могу избавиться от этой кодировки для новой строки, табуляции и т. Д. В браузере я использую AngularJS и C# REST web api.

Если я использую этот код вместо в TransformToString метод:

using (MemoryStream ms = new MemoryStream()) 
{ 
    using (XmlTextWriter writer = new XmlTextWriter(ms, Encoding.UTF8)) 
    { 
     Xslt.Transform(doc.CreateNavigator(), writer); 
     ms.Position = 0; 

     using (var sr = new StreamReader(ms)) 
     { 
      return sr.ReadToEnd(); 
     } 
    } 
} 

я только получаю \n, \t и бежал двойные кавычки \"

Метод в контроллере:

[HttpGet] 
public string GetHtmlFromXslt() 
{ 
    return GetHtmlFromXmlAndXslt(); 
} 
+0

только для тестирования. Можете ли вы написать для записи своей итоговой строки. 'return sr.ReadToEnd()' excnahge to 'var temp = sr.ReadToEnd(); File.WriteAllText ("1.txt", temp); '. Будет ли в файле «1.txt» символы \ n, \ t? –

+0

Он хранит \ r \ n, но не как видимые символы, а как пробелы. Может быть, я не должен возвращать его как строку? – AlexandruC

ответ

3

Прежде все, что я предложил бы вернуть это как html, а не обычный текст (вероятно, это rea сын, почему вы получаете эти символы):

[HttpGet] 
public HttpResponseMessage GetHtmlFromXslt() 
{ 
    var response = new HttpResponseMessage(); 
    response.Content = new StringContent(GetHtmlFromXmlAndXslt()); 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
    return response; 
} 

Если это невозможно, вы можете заменить ненужные строки перед выводом на экран так:

yourHtml.replace(/\\n|\\r|\\t/g, '') //will replace \n, \t and \r 
+0

Как вернуть его как html? У меня есть REST API, а не страница ASP.NET, возвращаемая строка/html добавляется в angularJS по прибытии. – AlexandruC

+0

@ A.K Возможно, вам нужно установить тип контента ** Response.ContentType = "text/html"; **. – Vladimirs

+0

Я добавил свою функцию, которая находится в подклассе ApiController, который я сделал – AlexandruC

Смежные вопросы