C# 将文本显示为标签时丢失格式设置
我有一个多行文本框,用作描述字段。大量信息可以通过空格和返回添加到此文本框。以段落形式。当我以后将此文本显示为C# 将文本显示为标签时丢失格式设置,c#,asp.net,C#,Asp.net,我有一个多行文本框,用作描述字段。大量信息可以通过空格和返回添加到此文本框。以段落形式。当我以后将此文本显示为标签时我会丢失所有格式,它会变成一堵文本墙。我能做些什么来保持原始格式吗 var customerInfo = GetCustomerInfo(itemid); if (customerInfo != null) { ItemID.Text = customerInfo.ItemID
标签时
我会丢失所有格式,它会变成一堵文本墙。我能做些什么来保持原始格式吗
var customerInfo = GetCustomerInfo(itemid);
if (customerInfo != null)
{
ItemID.Text = customerInfo.ItemID.ToString();
Description.Text = customerInfo.Description;
}
页面源代码如下所示
This is a test
this is a test
this is a test
1. test
2. test
3. test
4. tes
This is a test this is a test this is a test 1. test 2. test 3. test 4. tes
标签/文字如下所示
This is a test
this is a test
this is a test
1. test
2. test
3. test
4. tes
This is a test this is a test this is a test 1. test 2. test 3. test 4. tes
我不太确定你是否发布了其他内容,但这应该会有所帮助
Label1.Text = HttpUtility.HtmlEncode(myStringFromTxtBox);
我不太确定你是否发布了其他内容,但这应该会有所帮助
Label1.Text = HttpUtility.HtmlEncode(myStringFromTxtBox);
在HTML中显示格式化文本时,不会显示格式化文本,因为HTML有其他格式化文本的方法。在HTML中,所有格式字符(换行符、制表符等)都算作空格,因此它只会显示为一大块文本 要显示HTML格式的文本,必须将格式转换为HTML用于格式化的内容,例如:
label.Text = myText.Replace("\r\n", "<br>").Replace("\t", " ");
label.Text=myText.Replace(“\r\n”和“
”)。Replace(“\t”和“);
在HTML中显示格式化文本时,不会显示格式化文本,因为HTML有其他格式化文本的方法。在HTML中,所有格式字符(换行符、制表符等)都算作空格,因此它只会显示为一大块文本
要显示HTML格式的文本,必须将格式转换为HTML用于格式化的内容,例如:
label.Text = myText.Replace("\r\n", "<br>").Replace("\t", " ");
label.Text=myText.Replace(“\r\n”和“
”)。Replace(“\t”和“);
问题在于,对于行分隔符,原始文本将有回车符(根据操作系统的不同而有所不同),但在HTML中,您需要将其转换为
以保持相同的格式
此外,标签控件也呈现为跨距。您最好使用常规div并在其上设置runat=“server”
属性,以便以编程方式分配内容
Guffa对其他角色(制表符、空格等)提出了另一个很好的观点所有这些内容都需要翻译成HTML格式。问题是,对于行分隔符,原始文本将有回车符(根据操作系统的不同而有所不同),但在HTML中,您需要将其翻译成
以保持相同的格式
此外,标签控件也呈现为跨距。您最好使用常规div并在其上设置runat=“server”
属性,以便以编程方式分配内容
Guffa对其他字符(制表符、空格等)提出了另一个很好的观点。所有这些字符都需要翻译成HTML格式。你能举一个原始文本的例子吗?您可以将文本输出到DIV而不是label control。您可以在只读文本区域中显示文本吗?还是必须转换成html?@Guffa你能告诉我我做错了什么吗。我尝试了这个
Description.Text=customerInfo.Description.Replace(“\r\n”和“
”).Replace(“\t”和“)代码>而且它似乎不起作用。你能展示一下你的原文吗?您可以将文本输出到DIV而不是label control。您可以在只读文本区域中显示文本吗?还是必须转换成html?@Guffa你能告诉我我做错了什么吗。我尝试了这个Description.Text=customerInfo.Description.Replace(“\r\n”和“
”).Replace(“\t”和“)
而且它似乎不起作用,因为您的代表我相信这可能比我建议的要好,但不是一样吗?@MUG4N-是的,我不认为手动尝试替换所有编码的html比使用内置html更好decoder@ScottSelby:HtmlDecode
的作用有点相反,例如转动&编码>进入和。甚至HtmlEncode
也不一样,它只是对一些字符进行编码,例如将&
转换为&代码>,它不会将格式字符更改为HTML等价物。@Guffa你能告诉我我是否做错了什么吗。我尝试了这个Description.Text=customerInfo.Description.Replace(“\r\n”和“
”).Replace(“\t”和“)当我在更新页面的文本框中显示文本时,它似乎不起作用,它保留了格式,但没有标签。我不知道这是否有帮助因为你的代表我相信这可能比我建议的要好,不是吗?@MUG4N-是的,我不认为手动替换所有编码的html比使用内置html更好decoder@ScottSelby:HtmlDecode
的作用有点相反,例如转动&编码>进入和。甚至HtmlEncode
也不一样,它只是对一些字符进行编码,例如将&
转换为&代码>,它不会将格式字符更改为HTML等价物。@Guffa你能告诉我我是否做错了什么吗。我尝试了这个Description.Text=customerInfo.Description.Replace(“\r\n”和“
”).Replace(“\t”和“)当我在更新页面的文本框中显示文本时,它似乎不起作用,它保留了格式,但没有标签。我不知道,如果我也尝试了你的帮助,但它不起作用,我一定是做错了什么。Description.Text=HttpUtility.HtmlEncode(customerInfo.Description)
我也试过你的,但没用,我一定是做错了什么事。Description.Text=HttpUtility.HtmlEncode(customerInfo.Description)代码>