Esiste un modo per creare e utilizzare proprietà dinamiche per ViewBag basate su stringhe?Crea proprietà ViewBag basate su stringhe
Qualcosa di simile
ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Grazie
Esiste un modo per creare e utilizzare proprietà dinamiche per ViewBag basate su stringhe?Crea proprietà ViewBag basate su stringhe
Qualcosa di simile
ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";
Grazie
ho appena scoperto che Viewdata può essere utilizzato per creare tali proprietà per ViewBag
Quindi per creare CityErrorMessage proprietà devo usare
ViewData.Add("CityErrorMessage", MyErrorMessage)
e quindi nella vista posso usare
@ViewBag.CityErrorMessage
EDIT:
ho creato le proprietà del ViewBag in modo dinamico, perché ho ricevuto il nome di campo con errore di validazione in una lista
modo che il codice è in realtà
foreach (ValidationError err in ValidationErrors)
{
ViewData.Add(
string.format("{0}ErrorMsg", err.PropertyName),
err.ValidationErrorMessage);
}
: mi sono tardato a capire che questo codice proviene da un progetto di Nancy e Nancy implementa il proprio ViewBag, quindi questo codice non funziona con .Net M VC3 e non risponde alla domanda. Tuttavia, si potrebbe sostenere che la domanda potrebbe essere risolta passando a Nancy.
ho trovato ViewBag ha un metodo Add
in modo da poter fare questo:
foreach(var row in model)
{
ViewBag.Add(row.resourceName, row.content);
}
Eccezione generata: "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" in Microsoft.CSharp.dll Informazioni aggiuntive: "System.Dynamic.DynamicObject" non contiene una definizione per "Aggiungi" – JEuvin
Verificherò il progetto che ho con questo codice funzionante. Sembra che gli altri non siano in grado di replicarlo. –
Grazie! Questo ha richiesto molto tempo per trovare. –
grazie per aver spiegato la relazione tra ViewBag e ViewData – anIBMer
Si deve notare che è possibile utilizzare 'ViewData [" NameHere "]' per ottenere in modo dinamico il valore degli elementi memorizzati. – Matty