Я вижу, что вы указываете new SelectList:
@Html.DropDownListFor(model => model.StateViewModel
, new SelectList(Model.StateViewModels
, "Abbr"
, "Name"
, Model.StateViewModel.Abbr)
, @Resource.SelectState)
, который будет отображать новый экземпляр списка, а не тот, который вы передавали! Следовательно, у вас не будетвыбранное значение.
Попробуйте установить его на:
@Html.DropDownListFor(model => model.SelectedStateID,
Model.States
, new { id = "ddlStates" })
И в вашей Controller / ViewModel заполните SelectList, как показано ниже. Я написал свой собственный пример, как это было проще.ниже приведен код для контроллера в ActionResult:
//Retrieve the list via LINQ/however and also the SelectedStateID
var states = ....
var statesList = new SelectList(states, "Abbr", "Name", SelectedStateID);
var viewModel = new StateViewModel
{
//assign it to the corresponding ViewModel property
States = statesList ,
...
...
};
return View( viewModel);
Ваша ViewModel будет выглядеть так:
private List<SelectListItem> _states = new List<SelectListItem>();
public List<SelectListItem> States
{
get
{
return (_states );
}
set
{
_states = value;
}
}
public Guid SelectedStateID
{
get;
set;
}
Я предполагаю, что это был ваш вопрос, и вы нена самом деле я хочу создать новый список, а также выбрать значение в этом списке в качестве значения по умолчанию.
Если это так, попробуйте следующее:
@Html.DropDownListFor(model => model.StateViewModel
, new SelectList(Model.StateViewModels
, "Abbr"
, "Name")
, Model.StateViewModel.Abbr
, @Resource.SelectState)
Я думаю, что ваша заключительная скобкав неправильном положении!