Quando il postback ottengo il seguente errore:Impostazione valore predefinito di un Html.DropDownList()
The ViewData item that has the key 'ClosingDateDay' is of type 'System.Int32' but must be of type 'IEnumerable'. Any ideas?
Ecco il mio controller:
CompetitionEditViewModel viewModel = new CompetitionEditViewModel
{
ClosingDate = competition.CloseDate,
Description = competition.Description,
DescriptionHeading = competition.DescriptionHeading,
ImageAssetId = competition.ImageAssetId,
IsActive = competition.IsActive,
MainHeading = competition.MainHeading,
TermsAndConditions = competition.TermsAndConditions,
UrlSlug = competition.UrlSlug
};
viewModel.ClosingDateMonthOptions = new List<SelectListItem>();
for (int i = 1; i <= 12; i++)
{
string monthName = new DateTime(2000, i, 1).ToString("MMMM");
((List<SelectListItem>)viewModel.ClosingDateMonthOptions).Add(new SelectListItem { Text = monthName, Value = i.ToString() });
}
viewModel.ClosingDateDayOptions = new List<SelectListItem>();
for (int i = 1; i <= 31; i++)
{
((List<SelectListItem>)viewModel.ClosingDateDayOptions).Add(new SelectListItem { Text = i.ToString().PadLeft(2, '0'), Value = i.ToString() });
}
viewModel.ClosingDateYearOptions = new List<SelectListItem>();
for (int i = DateTime.Now.Year; i <= DateTime.Now.Year + 3; i++)
{
((List<SelectListItem>)viewModel.ClosingDateYearOptions).Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
Ed ecco mio punto di vista:
@Html.Uber().LabelFor(x => x.ClosingDateDay, new { @class = "access" })
@Html.DropDownListFor(x => x.ClosingDateDay, Model.ClosingDateDayOptions, Model.ClosingDateDay)
@Html.Uber().LabelFor(x => x.ClosingDateMonth, new { @class = "access" })
@Html.DropDownListFor(x => x.ClosingDateMonth, Model.ClosingDateMonthOptions, Model.ClosingDateMonth)
@Html.Uber().LabelFor(x => x.ClosingDateYear, new { @class = "access" })
@Html.DropDownListFor(x => x.ClosingDateYear, Model.ClosingDateYearOptions, Model.ClosingDateYear)
è il tuo secondo frammento di codice manca un '.'? Presumo dal tuo punto di vista che tu abbia 'Model.ClosingDate.Day' e così via come ultimo parametro per i menu a discesa? – Franky
@Franky No, non lo è. Ma sicuramente mi hai appena aiutato a risolvere il problema haha. Grazie. – ediblecode
Felice di aiutare, ma cura di spiegare? – Franky