Это ответ на вторую часть о перенаправлении по клику ddl.
Сначала добавьте заполнитель в список выбора, чтобы пользователь мог сделать выбор:
@Html.DropDownList("Departments", ViewBag.Departments as SelectList, "Select a department...")
Затем добавьте jquery, который срабатывает при изменении, получает значение Id и отправляет его в контроллер:
$(function () {
$("#Departments").on("change", function () {
var deptId = $(this).val();
var routeVal = { Id: deptId };
var url = '@Url.Action("Department", "Home")';
$.ajax({
url: url,
type: 'POST',
data: routeVal
}).done(function (result) {
window.location.href = result.newUrl;
})
})
})
Это двойной прыжок, поэтому я уверен, что его можно улучшить. По сути, он получает значение Id, а затем отправляет его в действие контроллера под названием SetUrl, которое возвращает новый URL-адрес в функцию ajax, которая затем направляет пользователя на новый URL-адрес в функции .done (). В этом случае новый URL-адрес - Home / Department / 1, который возвращается к контроллеру для возврата нового представления:
public ActionResult Department(int Id)
{
// Get the department data for this ID
// Fill a model then return it
return View(model);
}