【问题标题】:How to show a new line (<br>) with LabelFor?如何使用 LabelFor 显示新行 (<br>)?
【发布时间】:2011-08-11 12:29:26
【问题描述】:

我有一个 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+"

【问题讨论】:

  • 如果您选择使用已添加的答案,请注意跨站点脚本问题

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


【解决方案1】:

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

【讨论】:

  • 你能举个例子吗
  • 类似 @Html.Raw("&lt;pre&gt;" + help_text + "&lt;/pre&gt;") 的东西。注意:您不需要在help_text 中将 \r\n 替换为
  • 我刚刚测试了这个,它确实显示了新行。但它拉伸了我的 所以它不适合屏幕。此外,文本格式与其余的不同:/
【解决方案2】:

对 LabelFor 使用此语法

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

【讨论】:

  • Html.LabelFor 返回 MvcHtmlString,Html.Raw 以字符串为参数。如果我这样做: @Html.Raw(@Html.LabelFor(y=>question.HelpText, question.HelpText).ToString()) 它返回与 LabelFor 相同的结果
  • 我刚刚用我的代码测试了你的方法,它输出与 LabelFor 相同的结果,它不显示新行:/
  • @Html.Raw("

    "+question.HelpText+"

    ") 是解决方案。你是最接近的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2015-01-10
  • 1970-01-01
相关资源
最近更新 更多