Создать свойства ViewBag на основе строк - PullRequest
24 голосов
/ 29 октября 2011

Есть ли способ создать и использовать динамические свойства для ViewBag на основе строк?

Что-то вроде

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

Спасибо

Ответы [ 2 ]

48 голосов
/ 29 октября 2011

Я только что узнал, что 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);
}
0 голосов
/ 17 мая 2016

Обновление: я запоздало понял, что этот код взят из проекта Nancy, и Nancy реализует собственный ViewBag, поэтому этот код не работает с .Net MVC3 и не отвечает на вопрос. Однако можно утверждать, что этот вопрос можно решить, переключившись на Нэнси.

Я обнаружил, что ViewBag имеет метод Add, поэтому вы можете сделать это:

foreach(var row in model)
            {
                ViewBag.Add(row.resourceName, row.content);
            }
...