Ik ben bezig met de ontwikkeling van een applicatie (in .Net met MVC4 en EF5) waarmee een gebruiker een redelijk complexe entiteit kan aanmaken en opslaan. Denk ongeveer hieraan:
Een gebouw met een heleboel properties heeft oppervlaktes die bestaan uitverschillende opbouwen van verschillende materialen. En aan oppervlaktes hangen ook ramen en deuren met weer hun eigenschappen, etc.
We willen dit weergeven als één grote uitklapbare boomstructuur. Juist omdat het in de huidige implementatie vervelend is dat informatie op verschillende plekken ingevoerd moet worden. Tevens willen we dat wijzigingen in het formulier direct opgeslagen worden op de server via Ajax. Het formulier is echter niet statisch, want een gebruiker kan constant onderdelen toevoegen aan een gebouw (via Ajax met een return van de default waarden) zonder de pagina te verversen.
Het opsturen wil ik dan doen met een script ongeveer zo:
Wat ik me nu afvraag is hoe ik dit aan de kant van de controller het beste kan aanpakken?
Ik moet op de een of andere manier de naam van het attribuut mappen naar een property van een specifiek object ergens in de tree van het huidige gebouw.
Of pak ik het helemaal verkeerd aan en moet ik het gebouw niet helemaal openen, maar alleen het object met het aan te passen property? Maar hoe verifieer ik dan dat de User eigenaar is van dit specifieke gebouw? Het is namelijk wel wenselijk om niet heel het gebouw te hoeven openen voor de serverload. Zeker als iemand een keer lekker door het formulier gaat zitten tabben...
Een gebouw met een heleboel properties heeft oppervlaktes die bestaan uitverschillende opbouwen van verschillende materialen. En aan oppervlaktes hangen ook ramen en deuren met weer hun eigenschappen, etc.
We willen dit weergeven als één grote uitklapbare boomstructuur. Juist omdat het in de huidige implementatie vervelend is dat informatie op verschillende plekken ingevoerd moet worden. Tevens willen we dat wijzigingen in het formulier direct opgeslagen worden op de server via Ajax. Het formulier is echter niet statisch, want een gebruiker kan constant onderdelen toevoegen aan een gebouw (via Ajax met een return van de default waarden) zonder de pagina te verversen.
Het opsturen wil ik dan doen met een script ongeveer zo:
JavaScript:
1
2
3
4
5
6
7
8
| $(':input').change(function() { var i = $(this); $.ajax({ type: "POST", url: "ajax/update/", data: 'naam = ' +i.attr('name') + '&waarde = ' + i.val() }) }); |
Wat ik me nu afvraag is hoe ik dit aan de kant van de controller het beste kan aanpakken?
Ik moet op de een of andere manier de naam van het attribuut mappen naar een property van een specifiek object ergens in de tree van het huidige gebouw.
Of pak ik het helemaal verkeerd aan en moet ik het gebouw niet helemaal openen, maar alleen het object met het aan te passen property? Maar hoe verifieer ik dan dat de User eigenaar is van dit specifieke gebouw? Het is namelijk wel wenselijk om niet heel het gebouw te hoeven openen voor de serverload. Zeker als iemand een keer lekker door het formulier gaat zitten tabben...
