2017-06-15 73 views
-1

希望能夠輕鬆回答。我使用下面的代碼生成級聯下拉列表,但是,當我選擇國家時,州自動填充我的州表中的第一個值(適用於相應的國家/地區)。我認爲我需要在某處添加一個空字符串,但我不確定在哪裏。級聯下拉需要空白值MVC5

感謝

h2>Cascading DropDownList Sample</h2> 



<div> 

    <div> 

     @Html.DropDownList("dropdownCountry", new SelectList(string.Empty, "Value", "Text"), "Please select a country", new { @style = "width:250px;" }) 

    </div> 

    <div style="margin-top:50px;"> 


     @Html.DropDownList("dropdownState", new SelectList(string.Empty, "Value", "Text"), "Please select a state", new { @style = "width:250px;" }) 

    </div> 

</div> 

@section scripts 
{ 

<script> 

    $(function() { 

     $.ajax({ 

      type: "GET", 

      url: "/test/getcountries", 

      datatype: "Json", 

      success: function (data) { 

       $.each(data, function (index, value) { 

        $('#dropdownCountry').append('<option value="' + value.CountryId + '">' + value.CountryName +'</option>'); 

       }); 

      } 

     }); 



     $('#dropdownCountry').change(function() { 



      $('#dropdownState').empty(); 



      $.ajax({ 

       type: "POST", 

       url: "/test/GetStatesByCountryId", 

       datatype: "Json", 

       data: { countryId: $('#dropdownCountry').val() }, 

       success: function (data) { 

        $.each(data, function (index, value) { 

         $('#dropdownState').append('<option value ="' + value.Id + '">' + value.StateName + '</option>'); 

        }); 

       } 

      }); 

     }); 

    }); 

</script> 
    } 
+0

建議你參考[這個答案](https://stackoverflow.com/questions/33247717/how-to-keep-cascade-dropdownlist-selected-items-after-form-submit/33248183#33248183)爲正確處理級聯下拉列表的方式 –

回答

0

在您所在的國家/地區下拉更改事件成功回調函數,您必須進行一行更改。

$('#dropdownState').append('<option>Select State</option>'); 
$.each(data, function (index, value) { 
    $('#dropdownState').append('<option value ="' + 
     value.Id + '">' + value.StateName + '</option>'); 
}); 

而且我建議你把你的選項放在變量中,最後把這個值分配給下拉。

var html = ''; 
html = '<option>Select State</option>'; 
$.each(data, function (index, value) { 
    html += '<option value ="' + 
     value.Id + '">' + value.StateName + '</option>'; 
}); 
$('#dropdownState').html(html) 

追加功能添加選項來選擇元素,這將導致問題,如果你選擇國家A將提供5個州。然後你選擇國家乙,其中提供10個州,然後最終結果在國家下拉將是國家B的15個州選項。因此,而不是追加我已經使用HTML功能。

+0

完美!謝謝 – JohnNewbie

+0

你能標記答案是正確的。 –

0

你可以只在第一時間由服務GetStatesByCountryId返回的元素添加一個模擬項目。 ID字段可以是空白的,州名可以是「請選擇」。然後,您可以檢查所選項目ID是否爲空。