C# 如何使用DropDownListFor传递对象

C# 如何使用DropDownListFor传递对象,c#,asp.net-mvc-3,html.dropdownlistfor,C#,Asp.net Mvc 3,Html.dropdownlistfor,我有一个教师评分系统。当我创建一个关于老师的新评论时,我有一个dropdownlistfor()类列表,学生可以从中选择。我希望dropdownlist在提交时传入一个Course对象,但它只是传入null并给我一个错误。我正在使用viewbag显示所有可用的课程 型号: public class TeachersRatingsWall { public int ID { get; set; } [Range(1, 5, ErrorMessage = "Inval

我有一个教师评分系统。当我创建一个关于老师的新评论时,我有一个dropdownlistfor()类列表,学生可以从中选择。我希望dropdownlist在提交时传入一个Course对象,但它只是传入null并给我一个错误。我正在使用viewbag显示所有可用的课程

型号:

    public class TeachersRatingsWall
{

    public int ID { get; set; }



    [Range(1, 5, ErrorMessage = "Invalid rating")]
    public Int32 StarRating { get; set; }

    [Required]
    public string PostComment { get; set; }

    public DateTime PostDate { get; set; }

    [Required]
    public string Teacher { get; set; } //?   or public Teacher Teacher { get; set; }

    public Guid PosterID { get; set; }

    public string PosterUserName { get; set; }

    //[Required] 
    public Course Course { get; set; }

    public Guid CourseID { get; set; }




    }
 }
位置:

     public IQueryable<TeachersRatingsWall> Select()
    {
        return table.Select(x => new TeachersRatingsWall
                                {
                                  ID = x.ID,
                                  StarRating = x.StarRating,
                                  PostComment = x.PostComment,
                                  PostDate = x.PostDate,
                                  Teacher = x.Teacher,
                                  PosterID = x.PosterID,
                                  CourseID = x.CourseID,
                                  Course = new Course {
                                      ID = x.CourseID,
                                      CourseNumber = x.CourseEntity.CourseNumber,
                                      Department = x.CourseEntity.Department,
                                      Description = x.CourseEntity.Description,
                                      Name = x.CourseEntity.Name

                                                        }

                                });

    }
View-Create.cshtml

        <div class="editor-label">
        @Html.Label("Course:")
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.Course, new SelectList(ViewBag.allcourses))

    </div>

@Label(“课程:”)
@Html.DropDownListFor(model=>model.Course,新选择列表(ViewBag.allcourses))

在您的机型上,您需要以下内容

public int CourseId { get; set; }


MVC将为您自动映射,并为GET和POST选择必要的项目

IQueryable select()中的所有内容看起来正常吗?IList中的SelectListItem出现错误。知道原因吗?找不到命名空间或类型,它说您需要更改它以填充模型。课程这就是为什么它会给您一个错误。您如何填充控制器中的两个模型项?从上面的代码中,您可以在存储库的这一行更改它课程=新课程。。。。不要使用new,而是对所有课程进行子查询
public int CourseId { get; set; }
public IList<SelectListItem> Courses { get; set; }  
@Html.DropDownListFor(model => model.CourseId, Model.Courses, "")