.NET中如何用ViewBag变量正确填充HTML Helper TextBox?
解决ViewBag预填充TextBox显示对象字符串的问题
这是因为你误用了Html.TextBox的重载方法!咱们一步步来修正:
错误原因分析
你当前的视图代码:
@Html.TextBox("toemail", new { @ViewBag.contactemail }, new { @class = "form-control" })
这里的核心问题是:Html.TextBox的第二个参数是用来指定输入框要显示的值,但你却传了一个匿名对象(new { @ViewBag.contactemail }本质是创建了一个带contactemail属性的对象),所以TextBox会把这个对象的ToString()结果(也就是{ contactemail = katie@gmail.co.uk})显示出来,而不是你想要的纯邮箱地址。
正确写法
直接把ViewBag.contactemail作为第二个参数传入即可:
@Html.TextBox("toemail", ViewBag.contactemail, new { @class = "form-control" })
这样输入框就会正确显示katie@gmail.co.uk了。
额外补充(可选)
如果你的项目有对应的模型类,也可以用强类型的TextBoxFor来避免这类参数混淆问题,比如假设模型有ToEmail属性:
@Html.TextBoxFor(m => m.ToEmail, new { @class = "form-control" })
这时候只要在后台把模型的ToEmail赋值为对应邮箱,就能自动预填充,代码可读性也更高。
内容的提问来源于stack exchange,提问作者Lucie
相关产品推荐
相关产品推荐

