2016-06-08 61 views
-1

我有兩個連接到數據庫的下拉列表,其中一個名爲Distritos,另一個名爲Concelhos,而不選擇distritos,concelhos應顯示爲空,用戶選擇distritos中的一個詞,Concelhos應該顯示。我想讓它像一個國家城市的關係。 這是我在我的控制器:如何在未選擇另一個時顯示空的下拉列表

public ActionResult getcidades(int? distrito = null) 
{ 
    var concelho = 
     Db.Concelhos.OrderBy(r => r.Nome) as IQueryable<Concelho>; 

    if (distrito != null) 
    { 
     concelho = concelho.Where(t => t.Distritos.Id == distrito);      
    } 

    return Json(concelho.Select(r => new { Nome = r.Nome, r.Id }), JsonRequestBehavior.AllowGet); 
} 

這就是我在我的觀點:

$("#Distrito").on("change", function() { 
    var valor = $(this).val(); 

    $.ajax({ 
     type: "get", 
     url: "@Url.Action(" 
     getcidades "," 
     PiHelper ")", 
     data: { 
     distrito: valor 
     } 
    }) 
    .done(function(concelho) { 
     var dropdown = $("#Concelho"); 

     dropdown.empty().focus(); 

     console.log(concelho, dropdown) 
     for (var i = 0; i < concelho.length; i++) { 
     $("<option>") 
      .attr("value", concelho[i].Id) 
      .text(concelho[i].Nome) 
      .appendTo(dropdown); 
     } 
    }) 

}) 
+0

是什麼問題? – BenG

+0

當我不選擇「Distrito」(意思是狀態)時,它應該顯示一個空白(下拉列表中的空白)「Cidade」(Cidade表示城市)。 –

+0

您需要編輯您的問題以解釋問題。如果您在第一個下拉列表中選擇了「null」選項,那麼它將調用您的控制器方法,該方法返回所有'Concelhos'您應該測試'null',如果是,則清空第二個下拉列表並且不調用該方法。然後將控制器代碼更改爲'public ActionResult getcidades(int distrito){var concelho = Db.Concelhos.OrderBy(r => r.Nome).. Where(t => t.Distritos.Id == distrito);返回Json(....); }' –

回答

0

試試這個:

$('#distritos').each(function() { 
    if ($(this).not(':selected')) 
    { 
     $('#concelhos').val(0); 
    } 
}); 

if ($('#distritos :selected').length == 0) 
{ 
    $('#concelhos options').remove(); 
} 
相關問題