Ik ben sinds ongeveer een week bezig om mij te verdiepen in ASP.NET / C#. Ik werk met Visual Studio 2010. Ik ben momenteel aan het uitzoeken hoe ik het beste data die ik van een web service ontvang kan bewerken om in een view te kunnen gebruiken, zodanig dat er zoweinig mogelijk logic in de view hoeft plaats te vinden. Ik heb wel een ideeen erover... maar vraag me af of het nou echt zo ingewikkeld moet. Wellicht dat iemand een betere methode weet...
Stel, van de web service ontvang ik een object van de volgende class:
Nu wil ik deze ontvangen gegevens gaan bewerken zodat deze geschikt worden om in een view te gebruiken.
Bijvoorbeeld iets als:
Ik kan dit in de Category controller dan als volgt gebruiken:
Volgens mij moet dit werken, als ik geen tikfouten heb gemaakt ;-)
Alleen, dit betekent dat ik dus alle fields van het derived object apart moet setten d.m.v. een kopie van de field-waarde van het base object.
Uittypen kan bij classes met weinig fields, maar bij heel veel fields is het makkelijker om dit te automatiseren, ook dat gaat wel lukken.
Ik twee relevante pagina's gevonden die dit probleem bespreken:
* http://www.codeproject.com/KB/cs/JTConvert.aspx
=> Te simpel, want ik wil ook dat List<> ondersteund wordt
* http://www.codeproject.com/KB/cs/cloneimpl_class.aspx
=> Ik denk dat dit werkt, maar moet het echt zo ingewikkeld?
Mijn vraag is: is dit de juiste werkwijze? Kan het niet makkelijker?
Het mag van mij ook een heel andere oplossing zijn...
Bij voorbaat hartelijk dank voor alle hulp & tips!
Stel, van de web service ontvang ik een object van de volgende class:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class Category { string Name; List<Item> Items; contructor e.d. laat ik even weg } class Item { string Name; int Value; contructor e.d. laat ik even weg } |
Nu wil ik deze ontvangen gegevens gaan bewerken zodat deze geschikt worden om in een view te gebruiken.
Bijvoorbeeld iets als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class CategoryViewModel : Category { public int TotalValue; public void CategoryViewModel(Category c) { // Constructor Name = c.Name; Items = c.Items; TotalValue = 0; foreach (Item i in Items) { TotalValue += i.Value; } } } |
Ik kan dit in de Category controller dan als volgt gebruiken:
code:
1
2
3
4
5
6
| public ActionResult Index(int id) { Category c = mijnwebservice.GetCategory(id); CategoryViewModel cvm = new CategoryViewModel(c); return View(cvm); } |
Volgens mij moet dit werken, als ik geen tikfouten heb gemaakt ;-)
Alleen, dit betekent dat ik dus alle fields van het derived object apart moet setten d.m.v. een kopie van de field-waarde van het base object.
Uittypen kan bij classes met weinig fields, maar bij heel veel fields is het makkelijker om dit te automatiseren, ook dat gaat wel lukken.
Ik twee relevante pagina's gevonden die dit probleem bespreken:
* http://www.codeproject.com/KB/cs/JTConvert.aspx
=> Te simpel, want ik wil ook dat List<> ondersteund wordt
* http://www.codeproject.com/KB/cs/cloneimpl_class.aspx
=> Ik denk dat dit werkt, maar moet het echt zo ingewikkeld?
Mijn vraag is: is dit de juiste werkwijze? Kan het niet makkelijker?
Het mag van mij ook een heel andere oplossing zijn...
Bij voorbaat hartelijk dank voor alle hulp & tips!