实例化后在SelectList中设置选定的值

Bor*_*ens 31 .net c# asp.net-mvc selectlist

我是否认为在创建C#类SelectList后无法设置所选值?这不是有点傻吗?

awr*_*ley 19

我认为你正在与框架作斗争.进入视图的数据应在最后可能的分钟(LPM)中创建.

以这种方式思考,a SelectList是一种提供DropDownListHTML帮助程序的类型.在您决定如何处理数据时,它不是存储数据的地方.

更好的解决方案是将数据检索到a中List<T>,然后SelectList在需要时初始化(s).这种做法的直接好处是它允许您重复使用List<T>多个DropDownList,例如:

Country of birth
Country of residence
Run Code Online (Sandbox Code Playgroud)

这些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);
    }
}
Run Code Online (Sandbox Code Playgroud)

关键在于你应该将数据保存在List<T>真正需要输出的状态; 最后一分钟(LPM).