Замена <br>в текстовом поле - PullRequest
2 голосов
/ 15 мая 2011

У меня есть текстовое поле в Datalist с текстом, который я получаю из базы данных.В этом тексте много <br>, и вместо <br> я хочу использовать разрывы строк. Вот как это выглядит:

((TextBox)(EditProductList.Items[0].FindControl("txtEditDescription"))).Text.Replace("<br>", "\r\n");

 <asp:DataList ID="EditProductList" runat="server">
   <ItemTemplate>
     <asp:TextBox ID="txtEditDescription" runat="server" TextMode="MultiLine" Height="350px"
                            Width="350px" Text='<%#Eval("Description") %>'></asp:TextBox>
  </ItemTemplate>
</asp:DataList>

Я получаю текст, но получаю<br> также.

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

Вы фактически должны снова присвоить строку, возвращаемую Replace(), свойству Text.

var textBox = (TextBox)(EditProductList.Items[0].FindControl("txtEditDescription"));
textBox.Text = textBox.Text.Replace("<br>", "\r\n");
1 голос
/ 15 мая 2011

Попробуйте вместо этого (но это следует изменить):

Используя ваш оригинальный код:

((TextBox)(EditProductList.Items[0].FindControl("txtEditDescription"))).Text = 
          ((TextBox)(EditProductList.Items[0].FindControl("txtEditDescription"))).Text.Replace("<br>", "\r\n");

И рефакторинг это так:

TextBox textBox = ((TextBox)(EditProductList.Items[0].FindControl("txtEditDescription")));
textbox.Text = textBox.Text.Replace("<br>", "\r\n");

Обратите внимание, что в рефакторинге я заменяю поиск ссылкой на уже найденный элемент управления.

Причина, по которой мы делаем это так, заключается в том, что функция .Replace не изменяет рассматриваемый объект, а возвращает, так сказать, измененную версию объекта.

...