Подтвердить что ты не робот

Создание свойств ViewBag на основе строк

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

Что-то вроде

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

Спасибо

4b9b3361

Ответ 1

Я только узнал, что ViewData можно использовать для создания таких свойств для ViewBag

Итак, чтобы создать свойство CityErrorMessage, я должен использовать

ViewData.Add("CityErrorMessage", MyErrorMessage)

а затем в представлении я могу использовать

@ViewBag.CityErrorMessage

EDIT:

Я создал свойства ViewBag динамически, потому что я получил имя поля с ошибкой проверки в списке

Таким образом, на самом деле код

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

Ответ 2

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

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

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