Я думаю, что вы боретесь с рамками. Данные, поступающие в ваши представления, должны быть созданы в последний момент (LPM).
С этой точки зрения SelectList
- это тип для подачи в DropDownList
HTML-помощник. Это НЕ место для хранения данных, пока вы решаете, как их обрабатывать.
Лучшим решением было бы получить ваши данные в List<T>
и затем инициализировать SelectList
(s), когда вам нужно. Непосредственным преимуществом этой практики является то, что она позволяет вам повторно использовать List<T>
для более чем одного DropDownList
, например:
Country of birth
Country of residence
Эти SelectLists
все используют список стран типа List<Country>
.
Вы можете использовать List<T>
в «последнюю минуту», как в этом примере:
public class TaxCheatsFormViewModel
{
private List<Country> countries { get; set; }
public TaxCheat Cheat { get; private set; }
public SelectList CountryOfBirth { get; private set; }
public SelectList CountryOfResidence { get; private set; }
public SelectList CountryOfDomicile { get; private set; }
public TaxCheatsFormViewModel(TaxCheat baddie)
{
TaxCheat = baddie;
countries = TaxCheatRepository.GetList<Country>();
CountryOfBirth = new SelectList(countries, baddie.COB);
CountryOfResidence = new SelectList(countries, baddie.COR);
CountryOfDomicile = new SelectList(countries, baddie.COD);
}
}
Дело в том, что вы должны хранить свои данные в List<T>
до тех пор, пока вам действительно не потребуется их выводить; последняя возможная минута (LPM).