1

在我的 MVC 应用程序中,我尝试使用存储过程检索数据,然后将其显示在下拉列表中。

这是我的控制器动作

public ActionResult Register(string id )
{ 
    RegistrationModel Student = new RegistrationModel();

        using (var db = new StudentEntities())
        {
            var SportResultList = GetListOfSport();
            var SportSelectList = new SelectList(SportResultList);
            ViewBag.SportList = SportSelectList;

    return View(Student);
}

这是使用存储过程获取列表的方法

        public static List<GetSportsResult> GetListOfSport()
                {
       using (var db = new StudentEntities())
          {
ObjectResult<GetSportsResult> SportResults = db.GetSportsByStudentIdAndSeason(11111, 1);
List<GetSportsResult> results = SportResults.ToList();

           return results;
          }

        }

存储过程返回一个名为的复杂类型,GetSportsResults但我现在不知道如何访问它的字段。

目前此代码将显示GetSportsResults20 次,这是我应该获得的正确数量的记录

4

1 回答 1

3

构造函数中,SelectList您可以指定哪些字段将用于文本和值。这是通过将字符串值传递给构造函数来完成的。

例如,如果您的GetSportsResult对象有一个.ID属性作为其标识符,一个.Name属性作为其显示值,那么您的代码将如下所示:

var SportResultList = GetListOfSport();
var SportSelectList = new SelectList(SportResultList, "ID", "Name");
ViewBag.SportList = SportSelectList;

这将向SelectList对象指示GetSportsResult.ID应该是列表中每个项目的值,并且GetSportsResult.Name应该是列表中每个项目的显示文本。

在不指定这些字段的情况下,当前对象会尝试对要显示的内容做出“最佳猜测”。默认情况下,它可能通过调用.ToString()每个对象来做到这一点。非原始类型的默认行为.ToString()是显示类型本身的名称,这就是您看到"GetSportsResult"每个项目的字符串的原因。

于 2013-07-05T21:05:46.360 回答