2016-03-25 26 views
-1

'daki 2. açılır listeden değeri seçtikten sonra görüntülenmiyor. Asp.net mvc'de basamaklı açılır liste kullanıyorum.2. açılır pencere, asp.net mvc

İlk açılır menüden bir değer seçildiğinde, liste 2. açılır menüde gösterilir. 2. açılır menüden değeri seçtiğimde, açılır menüde gösterilir, ancak gönder düğmesine tıklandıktan sonra "Listeden Seç" ibaresini gösterir. Niye ya?

Görünüm:

<div class="row form-group"> 
    <div class="col-md-6"> 
     @Html.LabelFor(model => model.Religion_Id, new { @class = "control-label" }) 
     <div class="input-group"> 
      <span class="input-group-addon" style="background:white"> 
       <i class="fa fa-cloud" style="color:#179CDC;"></i> 
      </span> 
      @Html.DropDownListFor(model => model.Religion_Id, Model.Religion, "Select From List", new { @class = "form-control select2me", @id = "ddlReligion" }) 
     </div> 
     @Html.ValidationMessageFor(model => model.Religion_Id, string.Empty, new { @class = "small text-danger text-uppercase" }) 
    </div> 
    <div class="col-md-6"> 
     @Html.LabelFor(model => model.Sect_Id, new { @class = "control-label" }) 
     <div class="input-group"> 
      <span class="input-group-addon" style="background:white"> 
       <i class="fa fa-cloud" style="color:#179CDC;"></i> 
      </span> 
      <div id="Sects"> 
       @Html.DropDownListFor(model => model.Sect_Id, new List<SelectListItem>(), "Select Form List", new { @class = "form-control select2me", @id = "ddlSect" }) 
      </div> 
     </div> 
     @Html.ValidationMessageFor(model => model.Sect_Id, string.Empty, new { @class = "small text-danger text-uppercase" }) 
    </div> 
</div> 

<script> 

$(document).ready(function() { 
    loadSect(); 
}); 

var loadSect = function (flag) { 
    if ("undefined" == typeof (flag)) { 
     flag = true; 
    } 
    $.ajax({ 
     type: "post", 
     url: '@Url.Action("GetSects", "MyProfile", new { area = "Candidate" })', 
     data: { religionId: $('#ddlReligion').val() }, 
     datatype: "json", 
     traditional: true, 
     success: function (data) { 
      var district = "<select id='ddlSect' class='form-control text-uppercase select2me' name='Sect_Id'>"; 
      district = district + '<option value="">Select From List</option>'; 
      for (var i = 0; i < data.length; i++) { 
       district = district + '<option value=' + data[i].Value + '>' + data[i].Text + '</option>'; 
      } 
      district = district + '</select>'; 
      $('#Sects').html(district); 

      if (flag) { 
       setOption($('#Sects select')[0], $('#HSPEC_ID').val()) 
      } 


      if (jQuery().select2) { 
       $('#Sects .select2me').select2({ 
        placeholder: "Select an option", 
        allowClear: true 
       }); 
      } 
     } 
    }); 
}; 


$('#ddlReligion').change(function() { 
    loadSect(false); 
}); 

function setOption(selectElement, value) { 
    var options = selectElement.options; 
    for (var i = 0, optionsLength = options.length; i < optionsLength; i++) { 
     if (options[i].value == value) { 
      selectElement.selectedIndex = i; 
      return true; 
     } 
    } 
    return false; 
} 

cevap

0

Bir ajax göndermek yapmıyorlar. VEYA Sizin Kodunuzda yazı

sonra tekrar aşağı ikinci damlasının değeri ayarlayarak değil, sana ikinci damla dwn seçip göndermek vurmak sonra herhangi ajax göndermek görmüyorum. Bu nedenle sorun, bu formu denetleyiciye gönderiyorsunuz ve denetleyici görünümü aynı yayınlanan verilerle geri döndürüyor. Şimdi aşağı ikinci damla Jilet sözdiziminde size boş listeye new List<SelectListItem>() aşağı ikinci damla değerini ayarlarken görebilir ve aşağı ikinci açılan boş yüzden İşte

@Html.DropDownListFor(model => model.Sect_Id, new List<SelectListItem>(), "Select Form List", new { @class = "form-control select2me", @id = "ddlSect" }) 

kullanıyor.

Çözüm

  1. AJAX Formunuz için göndermek kullanmak Ya. Böylece UI'niz değişmeden kalır.
  2. Yani Districts adlı bir ek özellik eklemek ve başlangıçta bu Model.Districtnew List<SelectListItem>() olarak ayarlanır ve sonra form yazı yönteminde sadece verileri geri pas bu

    @Html.DropDownListFor(model => model.Sect_Id, Model.District, "Select Form List", new { @class = "form-control select2me", @id = "ddlSect" })

için Razor sözdizimi değiştirme

Alınan ve gönderildikten sonra düzgün bir şekilde oluşturulacaktır.

+0

açılan listenin sektleri var ... Ayrıca 2. açılır menüden de değeri seçebilirim ama gönder düğmesini tıkladıktan ve tıkladıktan sonra herhangi bir şey göstermiyor. –

+0

@SecretStar Neden hiçbir şey görüntülemediğinin nedenini açıkladım . –