【问题标题】:ASP.NET : generate ListBoxItems from values in databaseASP.NET:从数据库中的值生成 ListBoxItems
【发布时间】:2011-10-24 06:34:58
【问题描述】:

我想填充一个列表框,所以我必须定义一个 ListBoxItem 数组。 数据存储在数据库中。

这是我原来的方法:

public IEnumerable<String> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return (from s in c.Students
                orderby s.Name, s.FirstName
                select s.Name);
    }

所以“班级”包含一个学生列表(一个导航属性)。 我想要做的不是返回字符串的 IEnumerable,而是 SelectListItems 的 IEnumerable。

我已经开始了:

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return .Select(student => new SelectListItem
        {
            Text = ...
            Value = ...
        };
    }

但是我必须写什么作为文本和值?例如,我希望学生号作为值,我该怎么做?

这是我的 edmx: EDMX1

【问题讨论】:

    标签: asp.net asp.net-mvc database linq selectlistitem


    【解决方案1】:

    在构建SelectListItem 时,您只需引用student 变量:

    public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return c.Students.Select(student => new SelectListItem
        {
            Text = student.Name,
            Value = student.Number.ToString()
        });
    }
    

    当然也可以使用 LINQ 语法编写,如果您愿意的话:

    public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return (from student in c.Students
                select new SelectListItem
                {
                    Text = student.Name,
                    Value = student.Number.ToString()
                });
    }
    

    【讨论】:

    • 但是我有一个问题:当我输入 Value = student.StudentID 时,它给了我一个错误,说它不能从 int 转换为 string...
    • @Laurent 那是因为SelectListItem.Valuestring,所以你必须先将student.StudentID 转换为字符串。我相应地更新了代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2010-10-03
    • 2011-03-18
    • 2013-01-29
    相关资源
    最近更新 更多