Create ViewBag properties based on strings

bzamfir picture bzamfir · Oct 29, 2011 · Viewed 20.1k times · Source

Is there any way to create and use dynamic properties for ViewBag, based on strings?

Something like

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

Thank you

Answer

bzamfir picture bzamfir · Oct 29, 2011

I just found out that ViewData can be used to create such properties for ViewBag

So to create property CityErrorMessage I have to use

ViewData.Add("CityErrorMessage", MyErrorMessage)

and then in the view I can use

@ViewBag.CityErrorMessage

EDIT:

I created the ViewBag's properties dynamically, because I received the name of field with validation error in a list

So the code actually is

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