如何获取ViewBag的纯净值?控制器赋值后视图显示异常
解决ViewBag显示对象描述而非目标数值的问题
你碰到的这个情况,核心原因应该是你给ViewBag赋值的是一个包含incremento属性的匿名对象,而非直接的数值5。比如控制器里可能写了类似这样的代码:
// 错误示例:赋值了匿名对象 ViewBag.Incremento = new { incremento = 5 };
这种情况下,视图里直接输出ViewBag.Incremento时,ASP.NET MVC会默认调用对象的ToString()方法,就会显示出{ incremento = 5 }这个对象的字符串表示,而不是你想要的数值。
你可以通过两种方式解决:
方法1:在视图中访问对象的属性
如果控制器的代码暂时不能修改,那在视图里直接读取对象的incremento属性即可:
<!-- 文本框显示数值5 --> @Html.TextBox("Incremento", ViewBag.Incremento.incremento) <!-- 直接输出数值的话 --> @ViewBag.Incremento.incremento
方法2:修改控制器,直接赋值数值
这是更简洁的方式,直接把目标数值赋值给ViewBag的对应键,而不是包装成对象:
// 正确示例:直接赋值数值 ViewBag.Incremento = 5;
这样在视图里不管是用@Html.TextBox("Incremento", ViewBag.Incremento)还是直接输出@ViewBag.Incremento,都会显示纯净的数值5了。
内容的提问来源于stack exchange,提问作者Sergio Di Fiore
相关产品推荐
相关产品推荐

