在使用String后,用于转义qute的反斜杠重新生成

时间:2015-05-30 20:22:00

标签: c# asp.net backslash htmltextwriter stringwriter

在我的实体的ToString方法中,我尝试生成包含引号的信息字符串。所以我在引用之前使用反斜杠,一切都很好,直到我尝试将返回值赋给字符串变量,之后所有反斜杠都会回来。这就是ToString函数:

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

之后我尝试使用StringWriterHtmlTextWriter来生成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 个答案:

答案 0 :(得分:1)

在C#中的webBrowser控件中使用该结果似乎没问题。如果您希望避免使用这些新行和标签(对于真正的浏览器),您可以尝试替换代码中的几行代码。

旧代码:

for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
    if (String.IsNullOrEmpty((dt.Rows[i][2]).ToString()))
        dt.Rows[i].Delete();
}
dt.AcceptChanges();

新代码:

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

HtmlTextWriter中的第二个参数是用作选项卡的字符串。 所以你得到的结果就像:

using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter, string.Empty))
    {
        writer.NewLine = string.Empty;
编辑:为了避免\&#34;您可以使用<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(对于asp),或者更好地将结果重写为:

<%=