25

有什么方法可以基于字符串创建和使用 ViewBag 的动态属性?

就像是

ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";

谢谢

4

2 回答 2

52

我刚刚发现 ViewData 可以用来为 ViewBag 创建这样的属性

所以要创建属性 CityErrorMessage 我必须使用

ViewData.Add("CityErrorMessage", MyErrorMessage)

然后在视图中我可以使用

@ViewBag.CityErrorMessage

编辑:

我动态创建了 ViewBag 的属性,因为我在列表中收到了带有验证错误的字段名称

所以代码实际上是

foreach (ValidationError err in ValidationErrors)
{
    ViewData.Add(
        string.format("{0}ErrorMsg", err.PropertyName),
        err.ValidationErrorMessage);
}
于 2011-10-29T00:31:45.850 回答
-3

更新:我姗姗来迟地意识到这段代码来自一个 Nancy 项目,而 Nancy 实现了它自己的 ViewBag,所以这段代码不适用于 .Net MVC3 并且不回答这个问题。然而,有人可能会争辩说,这个问题可以通过切换到南希来解决。

我发现 ViewBag 有一个Add方法,所以你可以这样做:

foreach(var row in model)
            {
                ViewBag.Add(row.resourceName, row.content);
            }
于 2016-05-17T15:05:24.977 回答