Создание свойств ViewBag на основе строк
Есть ли способ создать и использовать динамические свойства для ViewBag на основе строк?
Что-то вроде
ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Спасибо
Ответы
Ответ 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);
}