我在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>
。
答案 0 :(得分:2)
您实际上必须再次将Replace()
返回的字符串分配给Text
属性。
var textBox = (TextBox)(EditProductList.Items[0].FindControl("txtEditDescription"));
textBox.Text = textBox.Text.Replace("<br>", "\r\n");
答案 1 :(得分:1)
试试这个(但应该重构):
使用原始代码:
((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函数不会改变有问题的对象,它会返回对象的变异版本,可以这么说。