加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 默认情况下,Html.TextArea会生成额外的换行符

发布时间:2020-12-16 07:01:33 所属栏目:asp.Net 来源:网络整理
导读:我正在渲染这样一个普通的textarea: @Html.TextAreaFor(x = x.Description) 我希望看到一个空的textarea,但这是我所看到的(我选择第一行使其更清晰): 我检查了生成的html,它包含开始和结束标记之间的换行符: textarea class="form-control" cols="20" id=
我正在渲染这样一个普通的textarea:

@Html.TextAreaFor(x => x.Description)

我希望看到一个空的textarea,但这是我所看到的(我选择第一行使其更清晰):

我检查了生成的html,它包含开始和结束标记之间的换行符:

<textarea class="form-control" cols="20" id="Description" name="Description" rows="2">
</textarea>

这是通过设计完成的吗?我可以改变这种行为吗?

解决方法

在看到你的问题之后,我研究了Google,看看@ Html.TextAreaFor中额外行背后的问题是什么.看一看.

有些文章与您的问题有关: –

http://www.peschuster.de/2011/11/new-line-bug-in-asp-net-mvcs-textarea-helper/

ASP.NET MVC Textarea HTML helper adding lines when using AntiXssLibrary

文章提出了TextAreaHelper类中的基本问题,它由@ Html.TextAreaFor使用.

private static MvcHtmlString TextAreaHelper(HtmlHelper htmlHelper,ModelMetadata modelMetadata,string name,IDictionary<string,object> rowsAndColumns,object> htmlAttributes)
{
    // Some initialization here...

    TagBuilder tagBuilder = new TagBuilder("textarea");

    // Some more logic...

    tagBuilder.SetInnerText(Environment.NewLine + attemptedValue);
    return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal);
}

以上代码中的问题是

tagBuilder.SetInnerText(Environment.NewLine + attemptedValue);

这就是为什么@ Html.TextAreaFor的实际输出会是这样的,额外的行显示:

<textarea>&#13;&#10;This is the content...</textarea>

这个问题的解决方法是

第一种解决方法实现Javascript onLoad修复以从所有textareas中删除有问题的编码:

$("textarea").each(function () { $(this).val($(this).val().trim()); });

第2种解决方法创建自己的帮助程序,以在视图中呈现textarea标记

public static MvcHtmlString FixedTextAreaFor<TModel,TProperty>(
  this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TProperty>> expression)
{
    return new MvcHtmlString(htmlHelper.TextAreaFor(expression)
        .ToHtmlString()
        .Replace(">&#13;&#10;",">" + Environment.NewLine));
}

这些文章还建议在MVC 4 Developer Preview中修复此问题!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读