如何用LabelFor显示新行(<br/>)?

时间:2011-08-11 12:29:26

标签: asp.net asp.net-mvc-3

我有一个TextArea,用户可以在其中编写一些文本。当我尝试使用LabelFor显示文本时,我收到“非法字符”错误,因为字符串对于每个新行都有“\ r \ n”。

我试过使用这个解决方案:

Show new lines from text area in ASP.NET MVC

     if (q.help_text != null)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            System.IO.StringReader sr = new System.IO.StringReader(q.help_text);

            string tmpS = null;
            do
            {
                tmpS = sr.ReadLine();
                if (tmpS != null)
                {
                    sb.Append(tmpS);
                    sb.Append("<br />");
                }
            } while (tmpS != null);
            var convertedString = sb.ToString();
            qvm.HelpText = convertedString;
        }
        else
            qvm.HelpText = q.help_text;

LabelFor也不输出新行,而是输出br代码。 我该如何解决这个问题?

修改

解决方案是这样做:

@ Html.Raw( “

” + question.HelpText +”

2 个答案:

答案 0 :(得分:3)

这是因为LabelFor是HTML编码文本。这样做是为了避免跨站点脚本问题。您可以做的是使用pre标记来原样呈现文本区域字符串(使用\ r \ n)

答案 1 :(得分:0)

将此语法用于LabelFor

@Html.Raw(Html.LabelFor(x => x.Name))