Это невозможно, так как вы это делаете, потому что бритвенные представления компилируются на стороне сервера, а javascript - на стороне клиента. Таким образом, представления уже скомпилированы, в то время как JavaScript выполняется во время выполнения. Один из способов сделать это - использовать ajax для передачи переменных из javascript в действие в контроллере в качестве параметров запроса или значений тела. Этого можно добиться, создав кнопку или ссылку:
<a href='#' id='clickMe'>Click me</a>
И подключение jQuery для выполнения работы:
<script>
$(document).ready(function(){
$('#clickMe').click(function(){
$.ajax({
type: "POST",
url: '@Url.Action("Action", "Controller")',
data: {
passedData: GetDropDownData()
},
success: function(response){
$('#placeholderForPartialView').html(response);
}
});
});
});
</script>
Это будет выглядеть примерно так в зависимости от типа вашего метода (GET или POST).
Здесь я предполагаю, что в результате вы возвращаете частичное представление и заменяете содержимое #placeholderForPartialView
div на возвращенное представление. Пожалуйста, поправьте меня, если я ошибаюсь.