Рита,
Вот мои усилия на этом:
модель:
namespace MvcApplication1.Models
{
public class RegionKeyValues
{
public int RegionId { get; set; }
public string RegionValue { get; set; }
}
public class RegionKeyValuesViewModel
{
public int SelectedRegionId { get; set; }
public IEnumerable<RegionKeyValues> RegionList { get; set; }
}
}
Действие контроллера:
public ActionResult Index()
{
var regionList = new[] {
new RegionKeyValues { RegionId = 1, RegionValue = "A" },
new RegionKeyValues { RegionId = 2, RegionValue = "B" },
new RegionKeyValues { RegionId = 3, RegionValue = "D" }
};
var viewModel = new RegionKeyValuesViewModel
{
RegionList = regionList,
SelectedRegionId = 1 // hardcoded here, but in real-life, from the db
};
ViewData.Model = viewModel;
return View();
}
Посмотреть код (в Razor):
@model MvcApplication1.Models.RegionKeyValuesViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.DropDownListFor(a => a.SelectedRegionId,
new SelectList(Model.RegionList, "RegionId", "RegionValue",
Model.SelectedRegionId), "-- Select --")
так что в основном я передаю строго типизированную ViewModel в представление и устанавливаю выбранный RegionId в контроллере и передаю его в Model.SelectedRegionId.В реальном приложении вы, очевидно, получили бы viewModel из БД или другой структуры.
стоит рассмотреть в качестве альтернативы.