If there aren't many combinations, then you can also simply bring the entire dictionary down to the client in a JavaScript variable and then just do the whole thing client-side as you desired.
Example:
in the Controller, you would store the dictionary in the ViewBag like so:
// Keep in mind that I don't know your data structure, but you'll get the point.
ViewBag.DeviceDictionary = myDictionary;
Then in the view, you would do something like this:
<script type="text/javascript">
// new-up an array in JavaScript.
var devices = [];
// ... IT'S RAZOR TIME!!!
@foreach (Device d in ViewBag.DeviceDictionary)
{
<text>
// We're back in JavaScript here... new up the dictionary.
devices[@d.ID] = [];
</text>
foreach (var model in d.Models
{
<text>devices[@d.ID].push("@model.Name");</text>
}
}
</script>
Then, you just write some simple JavaScript (using jQuery?) that clears out the second drop down list and populates it from this array (which is client side).
Keep in mind I'm giving you an example completely making up your data-structures... but you should get the idea from this.