我卡住了,幾個星期前: -
讓你的MVC調用如: -
private void LoadDropdown1()
{
var _data;//Your logic to get the data
ViewData["Dropdown1"] = new SelectList(_data, "Dropdown1Id", "Name");
}
private void LoadDropdown2(int dropdownParameterId)
{
var _data = "";//Use your ID to get the data
ViewData["Dropdown2"] = new SelectList(_data, "Dropdown2Id", "Name");
}
你.cshtml是: -
@using (Html.BeginForm())
{
<div>
<table>
<tr>
<td><b>Select a District:</b></td>
<td>@Html.DropDownListFor(m => m.Dropdown1Id, ViewData["Dropdown1"] as IEnumerable<SelectListItem>, "Select One", new {@id="Dropdown1Id"})</td>
</tr>
<tr>
<td><b>Select:</b></td>
<td>@Html.DropDownListFor(m => m.Dropdown2Id, ViewData["Dropdown2"] as IEnumerable<SelectListItem>, "Select One")</td>
</tr>
</table>
</div>
}
現在AJAX呼叫最好是將數據加載到您的下拉列表中: -
$(function() {
$('select#Dropdown1').change(function() {
var id = $(this).val();
$.ajax({
url: 'Bla Bla',
type: 'POST',
data: JSON.stringify({ id: id }),
dataType: 'json',
contentType: 'application/json',
success: function (data) {
$.each(data, function (key, data) {
$('select#Dropdown1').append('<option value="0">Select One</option>');
// loop through the LoadDropdown1 and fill the dropdown
$.each(data, function (index, item) {
$('select#Dropdown1').append(
'<option value="' + item.Id + '">'
+ item.Name +
'</option>');
});
});
}
});
});
});
我想說的是..按照你喜歡的方式加載你的第一個下拉列表。然後在1下拉的變化情況,可以觸發一個Ajax調用來獲取的第二個下拉數據....同樣..
參考: - on select change event - Html.DropDownListFor
http://stackoverflow.com/questions/5497524/在asp-net-mvc-3-with-c-sharp中最簡單的方式創建一個cascade-drop-in-asp-net 讀取第一個值,然後通過ajax調用並將其傳遞給子動作並重復相同。 – 2013-02-22 04:14:52