ASP.NET Core MVC中使用ViewBag填充textarea失败问题排查
解决TextArea无法通过ViewBag填充内容的问题
你的问题核心是:用asp-for绑定的<textarea>没法显示@ViewBag.JobsDetails.job_description的内容,但换成TextBox就能正常显示,且ViewBag数据不为空。
问题原因
asp-for是ASP.NET Core的Tag Helper属性,它会优先绑定模型中对应字段的值。如果你的页面模型里job_description字段是空的,就会覆盖你在textarea标签内写的ViewBag内容。而TextBox如果是直接读取ViewBag值(比如没用到asp-for),就不会受模型绑定的影响,所以能正常显示。
解决方案
方案1:移除asp-for,直接用ViewBag填充
如果不需要该textarea和模型绑定,直接删掉asp-for属性即可:
<div class="col-lg-6 mb-4"> <label class="form-label" for="job_description">Job Description</label> <textarea class="form-control" id="job_description">@ViewBag.JobsDetails.job_description</textarea> </div>
(手动给label加for、textarea加id,保证标签关联的语义化)
方案2:让模型值同步ViewBag内容
如果需要保留asp-for的模型绑定功能,在Controller里把ViewBag的值赋值给模型的对应字段:
// 假设你的页面模型是JobViewModel var viewModel = new JobViewModel(); // 将ViewBag的内容同步到模型字段 viewModel.job_description = ViewBag.JobsDetails.job_description; return View(viewModel);
这样asp-for绑定模型时,就会显示ViewBag传递过来的内容。
额外排查步骤
可以在页面上临时添加调试代码,确认ViewBag的内容确实存在:
<!-- 调试用,确认内容 --> <p>调试输出:@ViewBag.JobsDetails.job_description</p>
如果这里能正常显示,就说明问题确实出在模型绑定覆盖了标签内的内容。
内容的提问来源于stack exchange,提问作者A.Mac
相关产品推荐
相关产品推荐

