2012-04-13 6 views
1

Как передать значение выбранных типов? Я хочу передать его здесь:Передача параметра

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

проблема, после того, как я сделать первый первоначальный раскрывающийся выбора, все, грузы должным образом. Но если я захочу изменить свой выбор, страница не будет обновлена ​​до нового выбора. Как я могу это исправить?

ответ

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

, а затем:

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

или с использованием совершенно ненавязчивый JavaScript:

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

, а затем в совершенно отдельном файла JavaScript:

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

получил его, спасибо так много – BigBug

+0

@BlueMonster, см. моя вторая и лучшая альтернатива, используя ненавязчивый javascript, который полностью избегает смешивания кода на стороне сервера с javascript и позволяет разместить ваш скрипт в отдельном файле javascript. –

+0

Как я могу его обновить, когда в раскрывающемся списке будет сделан новый выбор? подумал, что я могу просто перезагрузить окно avoce $ .get, но это не сработает. – BigBug

Смежные вопросы