MVC中TextArea无法显示控制器传递的模型值问题
解决ASP.NET Core视图中TextArea无法显示模型内容的问题
问题分析
你尝试的两种方式都存在使用误区:
- 带
asp-for的textarea:asp-for是TagHelper绑定,会优先使用模型绑定的值生成内容,直接在标签内写@display.UserComment会被忽略,若控制器未正确赋值模型属性,就会显示为空。 Html.TextAreaFor的Value参数:textarea的内容是放在标签内部的,Value不是textarea的标准属性,设置后只会渲染到元素属性里,不会显示在输入框中。
正确实现方式
方式1:使用asp-for TagHelper
确保控制器已将赋值后的模型传递给视图,直接通过asp-for绑定属性即可,无需手动在标签内写内容:
<textarea asp-for="UserComment"></textarea>
控制器示例代码:
public IActionResult YourView() { var display = new YourModel { UserComment = "需要显示的纯文本内容" }; return View(display); }
方式2:使用Html.TextAreaFor辅助方法
直接指定模型属性表达式,辅助方法会自动从模型取值并渲染到textarea内部,无需设置Value参数:
@Html.TextAreaFor(m => m.UserComment)
若需设置行数、列数等额外属性,可通过htmlAttributes参数传递:
@Html.TextAreaFor(m => m.UserComment, new { rows = 6, cols = 80 })
注意事项
- 确认模型的
UserComment属性已被正确赋值,控制器传递模型时没有遗漏。 - 视图绑定的属性名称需与模型属性名称完全匹配(大小写敏感)。
- 若为POST回传后显示内容,需确保模型状态有效,或调用
ModelState.Clear()清除旧状态,避免旧值覆盖。
内容的提问来源于stack exchange,提问作者cr7oo
相关产品推荐
相关产品推荐

