gpt4 book ai didi

asp.net-mvc - Html.TextArea 默认生成额外的换行符

转载 作者:行者123 更新时间:2023-12-01 23:34:18 24 4
gpt4 key购买 nike

我正在渲染一个通常的文本区域,如下所示:

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

我期望看到一个空的文本区域,但这是我看到的(我选择了第一行以使其更清晰):

enter image description here

我检查了生成的 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

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

private static MvcHtmlString TextAreaHelper(HtmlHelper htmlHelper, 
ModelMetadata modelMetadata, string name, IDictionary<string,
object> rowsAndColumns, IDictionary<string, 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 修复以从所有文本区域中删除有问题的编码:

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

第二个解决方法创建您自己的帮助器以在 View 中呈现文本区域标记

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 中得到解决!

关于asp.net-mvc - Html.TextArea 默认生成额外的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com