有没有办法根据字符串为ViewBag创建和使用动态属性?
像
这样的东西ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
谢谢
答案 0 :(得分:47)
我刚刚发现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);
}
答案 1 :(得分:-3)
更新:我迟到意识到这段代码来自Nancy项目,而Nancy实现了它自己的ViewBag,所以这段代码不适用于.Net MVC3而且没有回答这个问题。但是,可能有人认为这个问题可以通过转换到Nancy来解决。
我发现ViewBag有一个Add
方法,所以你可以这样做:
foreach(var row in model)
{
ViewBag.Add(row.resourceName, row.content);
}