Использование обратной косой черты для экранирования qute регенерата после назначения строки

В ToString Метод моей сущности, я пытаюсь сгенерировать информационную строку, содержащую кавычки. поэтому я использую обратную косую черту перед кавычками, и все будет хорошо, пока я не попытаюсь присвоить возвращаемое значение строковой переменной, а после этого все обратные косые черты возвращаются. Здесь есть функция ToString:

public override string ToString()
    {
        string content = "{";
        content += "\"serviceType\":" + ServiceType.Name + ",";
        content += "\"Debt\":" + amount;
        content += "}";
        return content;
    }

после этого я пытаюсь использовать StringWriter а также HtmlTextWriter генерировать HTML, но после присвоения возвращаемого значения строковой переменной, есть много \, \r, \n, \tв переменной. есть функция:

    public string ToHtmlString()
    {

        StringWriter stringWriter = new StringWriter();
        using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
        {
            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
            writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "1px solid black");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Direction, "rtl");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);// Begin Table

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("زیر خدمت");
            writer.RenderEndTag();
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write(ServiceType.Name);
            writer.RenderEndTag();
            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("مبلغ");
            writer.RenderEndTag();
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write(amount);
            writer.RenderEndTag();
            writer.RenderEndTag();

            writer.RenderEndTag();// End Table
        }
        return stringWriter.ToString();
    }

и после присвоения значения переменной:

<table style=\"width:100%;border-style:1px solid black;direction:rtl;\">\r\n\t<tr>\r\n\t\t<td>زیر خدمت</td><td>درمان</td>\r\n\t</tr><tr>\r\n\t\t<td>مبلغ</td><td>6000</td>\r\n\t</tr>\r\n</table>

что тут происходит?

1 ответ

Решение

Этот результат, кажется, можно использовать в элементе управления webBrowser внутри C#. Если вы предпочитаете избегать этих новых строк и вкладок (для реального браузера), вы можете попробовать заменить несколько строк своего кода следующим образом.

СТАРЫЙ КОД:

using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
    {

НОВЫЙ КОД:

using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter, string.Empty))
    {
        writer.NewLine = string.Empty;

Второй параметр в HtmlTextWriter - это строка, используемая в качестве вкладки. Таким образом, полученный результат будет таким:

<table style=\"width:100%;border-style:1px solid black;direction:rtl;\"><tr><td>زیر خدمت</td><td>درمان</td></tr><tr><td>مبلغ</td><td>6000</td></tr></table>

РЕДАКТИРОВАТЬ: Чтобы избежать \"вы могли бы использовать <? php echo или же <%=(для жереха), или лучше переделать результат как:

return stringWriter.ToString().Replace("\"", "'");
Другие вопросы по тегам