2011-10-29 22 views

Odpowiedz

45

Właśnie się dowiedziałem, że ViewData mogą być wykorzystywane do tworzenia takich właściwości ViewBag

Tak, aby utworzyć właściwość CityErrorMessage muszę używać

ViewData.Add("CityErrorMessage", MyErrorMessage) 

a następnie w widoku mogę użyć

@ViewBag.CityErrorMessage 

EDIT:

stworzyłem właściwości ViewBag dynamicznie, bo otrzymała nazwę pola z błędu walidacji na liście

Więc kod faktycznie jest

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

dziękuję! To zajęło dużo czasu. –

+0

dziękuję za wyjaśnienie relacji między ViewBag i ViewData – anIBMer

+2

Należy zauważyć, że można użyć 'ViewData [" NameHere "]', aby dynamicznie uzyskać wartość przedmiotów, które zostały zapisane. – Matty

-3

Aktualizacja: spóźniłem się, że ten kod pochodzi z projektu Nancy, a Nancy implementuje własny ViewBag, więc ten kod nie działa z .Net M VC3 i nie odpowiada na pytanie. Można jednak argumentować, że pytanie to można rozwiązać, przechodząc na Nancy.

znalazłem ViewBag ma metodę Add więc można to zrobić:

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

Wyjątek zgłoszony: "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" w Microsoft.CSharp.dll Dodatkowe informacje: 'System.Dynamic.DynamicObject' nie zawiera definicji "Dodaj" – JEuvin

+0

Sprawdzę projekt, który mam z tym kod działa. Wygląda na to, że inni nie są w stanie go powielić. –

Powiązane problemy