Среда: Entity Framework (v6.0) с MVC и Razor. Бэкэнд — это SQL Server.
Помощник HTML DropDownListFor() отлично работает для столбца string в базе данных. Однако, когда я использую столбец десятичный с числовым выпадающим списком, платформа не выбирает значение, загруженное из базы данных при отображении формы.
Я предполагаю, что это связано с тем, что DropDownListFor() содержит строки как для текста, так и для значения и не может соответствовать десятичному значению из базы данных, поэтому SelectedItem не определяется.
Я пробовал выполнять кастинг в помощнике HTML, но терпит неудачу либо при компиляции, либо во время выполнения. Все примеры, которые я могу найти, предполагают, что вы хотите выбрать строку, а не число.
Любая помощь принята с благодарностью. Спасибо.
Код просмотра: проблемное поле — CollarSize. Выпадающий список CollarSizeSelect.
<div class="form-group">
@Html.LabelFor(model => model.CollarSize, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.CollarSize, Model.CollarSizeSelect, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CollarSize, "", new { @class = "text-danger" })
</div>
</div>
Определение класса содержит столбец, определенный следующим образом:
public Nullable<decimal> CollarSize { get; set; }
Выпадающий список CollarSize построен следующим образом:
public IEnumerable<SelectListItem> ChestSizeSelect
{
get
{
return GetSelectNumberRange(32, 60, (decimal)1.0);
}
}
private static List<SelectListItem> GetSelectNumberRange(int start, int end, decimal increment)
{
List<SelectListItem> numlist = new List<SelectListItem>();
for (decimal i = start; i <= end; i = i + increment)
{
numlist.Add(new SelectListItem() {Text = i.ToString(), Value = i.ToString()});
}
return numlist;
}
decimal
. Если значениеCollarSize
точно совпадает со значением одного из ваших вариантов (т. е. с использованиемToString()
), то этот параметр будет отображаться. - person   schedule 03.08.2015@Html.DropDownListFor(model => model.CollarSize.ToString(),
- person S Jones   schedule 03.08.2015CollarSize
. Если это (скажем)42
и у вас есть вариант сvalue="42"
, то он будет выбран. Соответствует ли значениеCollarSize
точно значению одного из ваших вариантов? - person   schedule 03.08.2015CollarSize.ToString()
не возвращается"15.0"
- person   schedule 03.08.2015