Ik ben al een tijdje bezig met een (iig voor mij) vrij complexe site en begin daardoor soms een beetje de draad kwijt te raken. Wat ik namelijk wil is volgens mij niet zo heel ingewikkeld, maar ik kom er niet uit.
Situatie:
Een pagina die bestaat uit allemaal partial views, die worden gerenderd als child actions ( @Html.Action('foo") ). De reden hiervoor is dat al deze views een ander model gebruiken.
Je kiest op deze pagina vervolgens een item uit een dropdown en klikt op OK. Nu worden er drie partial views gevuld met data.
Waar ik nu op vast loop, is het volgende:
Een van de partial views gebruik je om door te klikken naar een dieper niveau (je ziet eerst data op niveau 1 obv van de dropdown, en gaat dan data zien van niveau 2 obv het geklikte item). Als je dus op een item klikt, moet een andere view weer ververst worden en gevuld met de juiste data, en dat is waar ik nu niet uit kom.
Misschien voor de duidelijkheid even concreet wat ik wil bereiken:
Je kiest een opleiding.
Je krijgt nu onderliggende lessen te zien in een table, en totaaloverzicht van ingeschreven deelnemers en aanwezigheid bij de lessen, weergegeven als pie chart. Tot hier werkt het.
Als je op een les klikt, moet je voor die les de aanwezigheid zien, dus moet de pie chart worden ververst. (deelnemers zijn altijd gelijk)
Ik heb het als volgt geprobeerd, maar dan redirect de hele pagina ipv dat de view, dus dat werkt niet goed:
ik zit me nu net te bedenken dat het misschien gaat werken door in iedere table row een Ajax form te zetten, zou dat een goede aanpak zijn?
Update:
View verversen is nu half gelukt, door gebruik te maken van Ajax.ActionLink.
Echter ververst nu alleen de tekst, en niet de chart. Dit is de (vereenvoudigde) view
De PresentieChart action wordt niet aangeroepen. Deze wordt normaal gesproken wel aangeroepen als de Presentie view wordt gerenderd.
Situatie:
Een pagina die bestaat uit allemaal partial views, die worden gerenderd als child actions ( @Html.Action('foo") ). De reden hiervoor is dat al deze views een ander model gebruiken.
Je kiest op deze pagina vervolgens een item uit een dropdown en klikt op OK. Nu worden er drie partial views gevuld met data.
Waar ik nu op vast loop, is het volgende:
Een van de partial views gebruik je om door te klikken naar een dieper niveau (je ziet eerst data op niveau 1 obv van de dropdown, en gaat dan data zien van niveau 2 obv het geklikte item). Als je dus op een item klikt, moet een andere view weer ververst worden en gevuld met de juiste data, en dat is waar ik nu niet uit kom.
Misschien voor de duidelijkheid even concreet wat ik wil bereiken:
Je kiest een opleiding.
Je krijgt nu onderliggende lessen te zien in een table, en totaaloverzicht van ingeschreven deelnemers en aanwezigheid bij de lessen, weergegeven als pie chart. Tot hier werkt het.
Als je op een les klikt, moet je voor die les de aanwezigheid zien, dus moet de pie chart worden ververst. (deelnemers zijn altijd gelijk)
Ik heb het als volgt geprobeerd, maar dan redirect de hele pagina ipv dat de view, dus dat werkt niet goed:
HTML:
1
| <a class="clickablerow" href="@Url.Action("Presentie", "Klant", new{id = Model.Id})">@Model.SummaryLine</a> |
ik zit me nu net te bedenken dat het misschien gaat werken door in iedere table row een Ajax form te zetten, zou dat een goede aanpak zijn?
Update:
View verversen is nu half gelukt, door gebruik te maken van Ajax.ActionLink.
C#:
1
| @Ajax.ActionLink(@Model.SummaryLine, "Presentie", "Klant",new{id=@Model.Id,}, new AjaxOptions(){UpdateTargetId = "presentie"},new{@class = "clickablerow"} ) |
Echter ververst nu alleen de tekst, en niet de chart. Dit is de (vereenvoudigde) view
HTML:
1
2
3
4
| @model PresentieViewModel <img src="@Url.Action("PresentieChart", "Klant")" alt="chart" /> <p>Aanwezig: @Model.Present</p> <p>Afwezig: @Model.Absent</p> |
De PresentieChart action wordt niet aangeroepen. Deze wordt normaal gesproken wel aangeroepen als de Presentie view wordt gerenderd.
[ Voor 17% gewijzigd door Haan op 27-01-2012 17:09 ]
Kater? Eerst water, de rest komt later