2012-04-13 10 views
1

Wie übergebe ich den Wert der ausgewählten Typen? Ich will es, um von hier:Passing-Parameter

@Html.DropDownListFor(model => model.SelectedType, Model.Types, new { @onchange = "getSpecificFields(value in here)",}) 

das Problem ist, nachdem ich die ersten Anfänge Dropdown Auswahl zu treffen, alles ordnungsgemäß geladen. Aber wenn ich meine Auswahl ändern möchte, wird die Seite nicht auf die neue Auswahl aktualisiert. Wie würde ich das beheben?

Antwort

2
@Html.DropDownListFor(
    model => model.SelectedType, 
    Model.Types, 
    new { 
     onchange = "getSpecificFields(this.value)" 
    } 
) 

und dann:

<script type="text/javascript"> 
    function getSpecificFields(value) { 
     $.get('@Url.Action("CreateSpecific", "Employee")', { type: value }, 
      function(data) { 
       $("#specificFields").replaceWith(data); 
      } 
     ); 
    } 
</script> 

oder völlig unauffällig mit Javascript:

@Html.DropDownListFor(
    model => model.SelectedType, 
    Model.Types, 
    new { 
     id = "myddl", 
     data_url = Url.Action("CreateSpecific", "Employee") 
    } 
) 

und dann in einer völlig separaten JavaScript-Datei:

$(function() { 
    $('#myddl').change(function() { 
     var data = { type: $(this).val() }; 
     var url = $(this).data('url'); 
     $.get(url, data, function(result) { 
       $("#specificFields").replaceWith(result); 
     }); 
    }); 
}); 
+0

wird es, dank so viel – BigBug

+0

@BlueMonster, siehe meine zweite und bessere Alternative, die unaufdringliches Javascript benutzt, das vollständig vermeidet, dass Sie serverseitigen Code mit Javascript mischen und Ihnen erlaubt, Ihr Skript in eine unterschiedliche javascript Datei zu setzen. –

+0

Wie würde ich es aktualisieren, wenn eine neue Auswahl aus der Dropdown-Liste getroffen wird? Ich dachte, ich könnte Fenster avoce die $ .get nur neu laden, aber das funktioniert nicht. – BigBug