Yes, something like this should do the trick:
@using(Ajax.BeginForm("Action", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "target-id" }))
{
@Html.DropDownListFor(m => m.SomeField, new SelectList(Model.SomeList, "Id", "Name"))
<div id="stuff-to-be-fetched">
</div>
...............
}
<script>
$('#SomeField').change(function () {
var parameter = $(this).val();
var url = "@Html.Raw(Url.Action("GetOtherList"))" + "?parameter=" + parameter;
$.get(url, function (data) {
$("#stuff-to-be-fetched").html(data);
});
});
</script>
New Action:
public PartialViewResult GetOtherList(string parameter)
{
var list = _service.RetrieveList(parameter);
return PartialView("_GetOtherList", list);
}
_GetOtherList.cshtml:
@Html.Label("SomeOtherField)
@Html.DropDownList("SomeOtherField", new MultiSelectList(Model, "Id", "Name")