[asp.net mvc 1] dropdownlist met extra waarde(naast key/valu

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BulMi
  • Registratie: April 2006
  • Laatst online: 20-09 16:25
Ik ben bezig een bestaande asp.net pagine om te bouwen naar asp.net mvc 1.
Ik zit nu even met een probleem bij dropdownlists.
Bij mijn oude asp.net pagina had ik een dropdownlist waar je bijv een auto model kon selecteren. De keys waren de id's van de modellen en de waardes die weergegeven werden waren de modelnamen.
Werd er een model geselecteerd kreeg je een postback waarin dan een toeslag prijs werd berekend voor dat model. Deze werd dan ook op de pagina getoond.

Nu ik de pagina met asp.net mvc maak lijkt mij een postback toch mider praktisch. Aangezien het aantal modellen maxiamaal 10 is. Echter bij de hml dropdown helper moet je een collection selected list items opgeven. Dit is een key/value, echter zit ik met het probleem dat ik nu ook nog een 3e waarde heb(kosten/toeslag) Het idee was om bij het onchange event van de dropdown de toeslag te berekenen in javascript/jquery en deze dan meteen op de pagina bij te werken. Maar waar haal ik de lijst met toeslagen vandaan?

Mijn html/javascript kennis is zeer beperkt, normaal gesproken zit ik voornamelijk in c#/java te programmeren.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Meerdere mogelijkheden:

* AJAX / call om de gegevens op te halen, al dan niet icm JSON
* Een aparte JS array genereren en deze uitlezen

Als pure JS te lastig is, kan je ook eens kijken naar frameworks als jQuery.

[ Voor 22% gewijzigd door gorgi_19 op 15-02-2010 08:33 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • bastv
  • Registratie: September 2005
  • Laatst online: 09:03
ik doe het via jquery op deze manier:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    <script type="text/javascript">
        $(document).ready(function() {
            $('#AutoModelId').change(function() {
                $('#Toeslagen').html('');
                $.ajax({
                    url: '<%= Url.Action("GetToeslagenForModel", "Autos") %>',
                    data: { modelid: $('#ModelId').val() },
                    type: 'POST',
                    dataType: 'json',
                    success: function(data) {
                        $.each(data, function(i, item) {
                            // hier de logica + item.toeslag
                        })
                    }
                });
            });
        });
    </script>


de controlleraction om toeslagen op te halen:
C#:
1
2
3
4
5
6
7
8
9
10
11
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetToeslagenForModel(int modelId)
{
    var toeslagen = _autoRepository.GetToeslagenForModel(modelId);
    var toeslagenForJson = from t in toeslagen
                  select new
                        {
                            t.toeslag
                        };
    return Json(toeslagenForJson);
}