Found this great post on how to create cascading drop downs in ASP.NET MVC.
I created a page for looking up shipping rates by carrier, weight and zip code. For my particular usage, I had 2 lists: Carrier and ShipMethod. I wanted the cascading list to be disabled when the initial list selection had yet to be made. I created functions to populate the target list as well as enable/disable the target list. I made the js into a reusable Razor helper which should allow me to use it anywhere I need this functionality.
Here is the helper code:
@helper DynamicDropDowns() {
<script type="text/javascript">
function listChanged($list, $target, url) {
var listId = $list.val();
if (listId == "") { // User selected first option,
// so clear and disable the list
$target.empty();
enableList($target, false);
return;
}
$.getJSON(url, { id: listId }, function (data) {
$target.empty(); // Clear the list
$.each(data, function (idx, item) { // Add the data
$target.append($("<option/>",
{
value: item.Value,
text: item.Text
}));
});
enableList($target, true); // Enable the list
});
}
function enableList($list, enabled) {
$list.attr("disabled", enabled ? null : "disabled");
}
</script>
}
And here it is in action:
<script type="text/javascript">
$(function () {
var $carrier = $("#Carrier");
var $ship = $("#ShipMethod");
enableList($ship, false);
$carrier.change(function () {
listChanged($(this), $ship, "/Tools/GetShipMethodsByCarrier");
});
});
</script>