2014-01-23 2 views
0

У меня есть этот сценарий, на мой взгляд (this является источником):DropdownList не передает значение, но запускает скрипт. DropdownListFor передает значение, но не запускает скрипт

<script type="text/javascript" src="../../Scripts/jquery-1.7.1.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $("#state").prop("disabled", true); 
     $("#country").change(function() { 
      if ($("#country").val() != "Please select") { 
       var options = {}; 
       options.url = "/companies/getbolag"; 
       options.type = "POST"; 
       options.data = JSON.stringify({ country: $("#country").val() }); 
       options.dataType = "json"; 
       options.contentType = "application/json"; 
       options.success = function (states) { 
        $("#state").empty(); 
        for (var i = 0; i < states.length; i++) { 
         $("#state").append("<option>" + states[i] + "</option>"); 
        } 
        $("#state").prop("disabled", false); 
       }; 
       options.error = function() { alert("Fel vid bolagshämtning!"); }; 
       $.ajax(options); 
      } 
      else { 
       $("#state").empty(); 
       $("#state").prop("disabled", true); 
      } 
     }); 
    }); 

</script> 

Он заселяет второй выпадающий список, основанный на том, что выбран в первом. Каскадные выпадающие списки.

Это HtmlHelper запускает сценарий, но при представлении не учитывается стоимость:

@Html.DropDownList("country", ViewData["kundLista"] as SelectList) 

Это один делает наоборот, она представляет ценность, но не запускает скрипт:

@Html.DropDownListFor(model => model.Kund, ViewData["kundLista"] as SelectList) 

Мне нужно это для запуска сценария и отправки значения. Как мне это сделать?

ответ

1

Поскольку имя вашего объекта Kund, второй помощник создает элемент выбора, который имеет как id, так и name поля, установленные на Kund. С другой стороны, ваш скрипт использует id country для адресации этого выбора. Так у вас есть два варианта:

  1. Изменить идентификатор используется в сценарии к #Kund:

    $("#Kund").change(function() { 
        if ($("#Kund").val() != "Please select") { 
    
  2. Используйте первый помощник с правильным именем и идентификатором:

    @Html.DropDownList("Kund", ViewData["kundLista"] as SelectList), new {@id="country"}) 
    
+0

Я попытался tip nr 1, и это работает как шарм! Большое спасибо! - Я буду принимать как ответ, как только смогу! –

0

Если вы посмотрите на отображаемый html выпадающий список, создайте идентификатор Kund, который не будет соответствовать вашему сценарию. Я бы рекомендовал поставить класс на ваше падение падения, что не изменит

@Html.DropDownListFor(x => x.Kund, selectlist, new { @class = "Kund" }) 

затем в скрипте изменить селектор из #country в .Kund

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

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