根据字符串创建ViewBag属性

bza*_*fir 24 viewbag asp.net-mvc-3

有没有办法根据字符串为ViewBag创建和使用动态属性?

就像是

ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Run Code Online (Sandbox Code Playgroud)

谢谢

bza*_*fir 48

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

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

ViewData.Add("CityErrorMessage", MyErrorMessage)
Run Code Online (Sandbox Code Playgroud)

然后在视图中我可以使用

@ViewBag.CityErrorMessage
Run Code Online (Sandbox Code Playgroud)

编辑:

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

所以代码实际上是

foreach (ValidationError err in ValidationErrors)
{
    ViewData.Add(
        string.format("{0}ErrorMsg", err.PropertyName),
        err.ValidationErrorMessage);
}
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的是,您可以使用`ViewData ["NameHere"]`来动态获取已存储项目的值. (2认同)