В настоящее время я работаю над приложением, которое разрабатывается с использованием C# и Asp.Net MVC.Метод расширения не работает как следует
На одном из видов у меня есть около 10 DropDowns
, которые должны выбрать пользователи. Выбранное значение сохраняется в базе данных.
Для примера:
DropDown
имеетValue
из1
иText
появляется какFirst Main Fault
DropDown
имеетValue
изOne
и появляетсяText
вFirst Sub Fault
Теперь пользователи могут вернуться и изменить их записей. Поэтому я хочу показать им DropDown
, который уже выбран со значением того, что хранится в базе данных.
Для этого я использую следующий метод расширения
public static IEnumerable<SelectListItem> ToSelectListItems<T>(this IEnumerable<T> items, Func<T, string> textSelector, Func<T, string> valueSelector, Func<T, bool> selecter)
{
return items.OrderBy(item => textSelector(item))
.Select(item =>
new SelectListItem
{
Selected = selecter(item),
Text = textSelector(item),
Value = valueSelector(item)
});
}
Что я называю, как
var mainFaultSelectedDdl = mainFaults.ToSelectListItems(
m => m.MainFaultDescription,
m => m.Id.ToString(),
m => m.Id == mainFaultId); //mainFaultId here equals to 1. I've also tried m.Id.ToString() == mainFaultId.ToString() but still the same issue
var subFaultSelectedDdl = subFaults.ToSelectListItems(
s => s.SubFaultDescription,
s => s.SubFaultDescription,
s => s.SubFaultDescription == erst.SubFault); //erst.SubFault here equals to One
Когда я отлаживать код, который я могу видеть, как из выше DropDowns
Selected
установлен в True
но в представлении MainFault DropDown
не выбрано, но выбран SubFault DropDown
.
Может кто-нибудь сказать мне, где я ошибаюсь, пожалуйста.
Это, как я в настоящее время генерации DropDown
в представлении
@Html.DropDownListFor(m => m.Serial.MainFault, Model.MainFaultDdl, "Please select a main fault", new { id = "mainFaults", @class = "form-control main-ddl" })
@Html.DropDownListFor(m => m.Serial.SubFault, Model.SubFaultDdl, "Please select a sub fault", new { id = "subFaults", @class = "form-control main-ddl" })
Как вы создаете свои dropdownlists в представлении. Установка свойства 'Selected'' SelectListItem' игнорируется при привязке к модели –
, где вы задаете значение для 'mainFaultId' и' erst.SubFault'? – HimBromBeere
@StephenMuecke Я обновил свой вопрос, чтобы включить код из представления. Он работает для одного, а не для другого, это то, что меня путает – Code