我正在动态加载表,并且行数未知。每行(实际上每个单元格)都从数据库加载并连接成一个字符串:
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的新手),如果另一种方法是解决方案,我会礼貌地询问细节。
谢谢
答案 0 :(得分:0)
我觉得很愚蠢...我会删除这个问题,但它实际上可能会帮助MVC的新手。如果有人有类似问题,请记住您尝试添加值的位置。出现这种情况的唯一地方是在控制器中,您可以完全访问分配给ViewData的值。例如,如果要将tObj的值赋给ViewBag,那么尝试加载ViewData,只需与tObj连接即可。抱歉浪费你的时间,伙计们,我学到了一些东西。