2016-04-14 10 views
0

Bir kullanıcı MVC 6 (Core) projemde Select2.js'yi kullanmaya çalışıyorum; burada bir kullanıcı ilk liste kutusunda bir değer (veya birden çok değer) seçerse, o zaman İkinci liste kutusundaki güncellenmiş bir değerler listesi ile sağlanmıştır. Örneğin, eğer bir kullanıcı Üretici liste kutusundan "Ford" ve "Renault" yu seçerse, o zaman sadece Marka liste kutusundaki ilgili değerlerle sağlanır. Mondeo, Mustang, Clio, Megane vsMVC Core'u kullanarak Select2 ile otomatik olarak geri yükleme nasıl yapılır

Benim Görünüm sözdizimi:

// POST: MyController/Generation 
[HttpPost] 
[ValidateAntiForgeryToken] 
public IActionResult Generation(MyViewModel myViewModel, IEnumerable<int> manufacturerID) 
{ 
    return RedirectToAction("Generation"); 
} 
:

@model MyProject.ViewModels.MyViewModel 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#ManufacturerID').select2({ 
      placeholder: 'Please make a selection...', 
      width: 500 
     }); 
     $('#BrandID').select2({ 
      placeholder: 'Please make a selection...', 
      width: 500 
     }); 
    }); 
</script> 

<form asp-action="Generation"> 
    <div class="form-horizontal"> 
     <div class="col-md-10"> 
      @Html.ListBoxFor(model => model.ManufacturerID, Model.ManufacturerNames) 
      @Html.ListBoxFor(model => model.BrandID, Model.BrandNames) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Submit" class="btn btn-default" /> 
     </div> 
    </div> 
</form> 

Ben gönder düğmesi tıklarsanız yayın eylem yöntemi başarıyla Üretici kimlikleri listesini edinir

Ancak gerçekten istediğim, Web Formlarındaki AJAX Güncelleştirme Paneli'ne benzer bir şeydir; burada denetleyicilerin harekete geçirme yöntemine yapılan çağrı, kullanıcının gönderdiği tıklatmayla değil, listeden bir seçenek belirlendiğinde hemen gerçekleştirilir.

Yardımınız büyük beğeni topluyor.

Selamlar, X22

cevap

0
$(document).ready(function(){ 
    pageInit(); 
}); 

function pageInit(){ 
    $('#ManufacturerNames').off(); 
    $('#ManufacturerNames').on('change', function(e){ 
    //ajax request here 
    //call pageInit() in your callback to reattach select2 
    //and event handler if you are fully replacing the dropdown. 
    }); 

    $('#BrandNames').off(); 
    $('#BrandNames').on('change', function(e){ 
    //ajax request here 
    //same as callback above depending on how you go about doing this. 
    }); 
} 

Bu kılavuz bir yoldur, ancak 2'yi Seç gibi bir kitaplığı kullanıyorsanız beri, bunlar başlatma bu kurmak için kolay bir yol sağlayabilir.

+0

Yanıt için teşekkürler. Off() yönteminin ne yaptığından emin değilim, ancak yine de kodun yanlış davranmasına neden oluyor. Belki de bir "Ajax isteği" örneğini ve ayrıca "geri aramada" pageInit() aramayı nasıl gerçekleştirebileceğinizi açıklayabilirseniz, bu büyük bir memnuniyetle karşılanacaktır. – X22

İlgili konular