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

最佳答案

我认为您正在与框架进行斗争。进入 View 的数据应在“最后可能的分钟(LPM)”上创建。

以这种方式思考,SelectList是用于提供DropDownList HTML帮助器的类型。在决定如何处理数据时,它不是存储数据的地方。

更好的解决方案是将数据检索到List<T>中,然后在需要时初始化SelectList。这种做法的直接好处是,它允许您将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)。

关于c# - 实例化后在SelectList中设置所选值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/301854/

10-13 07:05