MultiLineText类型值无法在TextAreaFor中填充,更新功能遇阻求助
嘿,这个问题其实是ASP.NET MVC里TextAreaFor和TextBoxFor的渲染逻辑差异导致的,我来给你拆解清楚:
核心原因
- HTML里的
<textarea>标签和<input type="text">不一样,它没有标准的value属性,内容是直接写在标签闭合之间的(比如<textarea>这里是文本内容</textarea>)。 @Html.TextAreaFor本身就会自动绑定你的Model.Text值,把内容渲染到标签内部,完全不需要手动加@Value参数。你额外加的@Value = Model.Text对它来说根本不生效,甚至可能干扰默认的绑定流程,导致值没被正确填充。- 而
@Html.TextBoxFor对应的是<input>标签,这个标签有value属性,所以你手动设置的@Value能生效,但其实它也不需要手动指定,同样会自动从模型取值。
正确的写法
直接去掉@Value参数,用最基础的写法就行:
@Html.TextAreaFor(a => a.Text)
如果需要设置行数、列数或者样式这类HTML属性,直接在匿名对象里加就行,比如:
@Html.TextAreaFor(a => a.Text, new { rows = 6, cols = 80, @class = "form-control" })
额外注意点
还要确认下你的控制器在传递模型到视图时,Text属性确实被正确赋值了。另外如果之前有表单提交过,ModelState里的旧值可能会覆盖模型的新值,这种情况可以在控制器里调用ModelState.Clear()清除旧状态后再赋值模型。
内容的提问来源于stack exchange,提问作者walangala
相关产品推荐
相关产品推荐

