我动态地加载一个表,并且有一个未知的行数。每一行(实际上是每个单元格)都从数据库加载并连接到一个字符串中:
tableItems+="<td colspan='8' class='reportHeaderMain borderThin'> @ViewData[\"" + tString + "Title\"]</td>";在上面的代码中,tString是项目号,所以标题应该类似于"12345Title“。在控制器ActionResult的后面,我为ViewData项分配了一个值:
ViewData[tString + "Title"] = ((linkedArrayList)tObj[temp]).getInfo("Brand");在断点期间,所有值都会正确存储,但它在页面上呈现为“@ViewData”.“而不是ViewData值。我猜想这是因为预处理器正在执行一次重覆而不是两次重覆;这是为了编写,它正确地呈现字符串值,但不处理结果字符串(注意:标记正确显示)。这可能是Mono固有的,也可能是因为,在视图中,我使用的是HTML Raw:
@Html.Raw(@ViewData["tableItems"])我意识到在控制器中生成这样的标记并不是最好的实践,但这正是我正在使用的。有没有人想过如何将字符串中的ViewData呈现为值(例如,品牌名称)而不是“ViewData.”?替代方法是非常受欢迎的,尽管(因为我是MVC新手),如果另一种方法是解决方案,我会礼貌地询问详细信息。
谢谢
发布于 2015-05-07 15:57:21
我觉得自己很蠢.我会删除这个问题,但实际上它可能会对MVC的新手有所帮助。如果有人有类似的问题,记住你想要增加价值的地方。只有在控制器中才会出现这种情况,在控制器中,您可以完全访问分配给ViewData的值。例如,如果要将tObj的值分配给ViewBag,然后尝试加载ViewData,只需与tObj连接即可。抱歉浪费你们的时间,伙计们,我学到了一些东西。
https://stackoverflow.com/questions/30105186
复制相似问题