更改代码以呈现回车符和换行符

时间:2013-02-12 13:59:13

标签: c# asp.net .net

我在SQL Server数据库中有一个文本,其中包含new line charactercarriage return character。当我将此值分配给字符串变量时,我可以在第一个屏幕截图中看到这些换行符和回车符。但是当它被渲染时,这些值不存在(如第二个屏幕截图所示)。

我们如何render换行和回车字符在gridview中使用以下代码返回?

CODE

protected void Page_Load(object sender, EventArgs e)
{

    List<Account> result = new List<Account>();
    string value = DisplayTest("Daily Tax Updates:\r\n");

    Account acc = new Account(){Description = value};
    result.Add(acc);

    grdFinancialAmount.DataSource = result;
    grdFinancialAmount.DataBind();


}

public class Account
{
    public string Description { get; set; }
}


private static string DisplayTest(string searchValue)
{
    string test = String.Empty;
    string connectionString = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        string commandText = @"SELECT AccountType,* 
                          FROM Account 
                          WHERE AccountType LIKE @input ESCAPE '\'";
        using (SqlCommand command = new SqlCommand(commandText, connection))
        {
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.AddWithValue("@input", "%" + searchValue + "%");

            using (SqlDataReader reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {

                        test = reader.GetString(0);
                    }
                }
            }
        }
    }

    return test;

}

MARKUP

<asp:GridView ID="grdFinancialAmount" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Text">
            <ItemTemplate>
                <%# Eval("Description")%>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

数据库中的变量值

Variable value from Database

渲染价值

Rendered Value

2 个答案:

答案 0 :(得分:1)

\r\n替换\\r\\n应该可以正常工作。

我错误地解释了这一点,我想要显示\r\n而不是字符返回,但正如评论所说,请替换为<br/>

string.Replace("\r\n", "<br/>");

答案 1 :(得分:0)

您的渲染值是html。将\r\n放在html中可能会改变源html,但对渲染的内容完全没有影响。

您可以通过在渲染窗口上执行“查看源”来验证这一点。

在渲染之前,这里的一种方法是将所有\r\n替换为<br/>,这是一个强硬换行符。

或者您可以在字符串的前面添加<p>标记,并在字符串末尾添加</p>标记,然后将所有\r\n次出现替换为{{1即将其拆分为段落。这可能是两者中更优雅的方法。

此处还有其他选项,你只需要知道你需要将你的crlf字符翻译成html可以理解的东西。