Frage

I have following SelectList declaration in CourseRegisterModel:

public class CourseRegisterModel
{
    public StudentModel Student { get; set; }
    public CourseModel Course { get; set; }
    public IEnumerable<SelectListItem> CoursesList { get; set; }
    public DateTime RegisterDate { get; set; }
}

In CourseController I am retrieving all available courses by calling wcf web service:

public ViewResult Index()
    {
        ServiceCourseClient client = new ServiceCourseClient();
        Course[] courses;
        courses = client.GetAllCourses();
        List<CourseModel> modelList = new List<CourseModel>();
        foreach (var serviceCourse in courses)
        {
            CourseModel model = new CourseModel();
            model.CId = serviceCourse.CId;
            model.Code = serviceCourse.Code;
            model.Name = serviceCourse.Name;
            model.Fee = serviceCourse.Fee;
            model.Seats = serviceCourse.Seats;
            modelList.Add(model);
        }
        return View(modelList);//RegisterCourses.chtml
    }

I need to populate these courses in a dropdown on view RegisterCourses.chtml. How to put all records in selectlist in above code? Also how would i use that selectlist on view?

War es hilfreich?

Lösung

For starters, your RegisterCourses.cshtml needs to use:

@model <namespace>.CourseRegisterModel

Then, your controller code would be:

public ViewResult Index()
    {
        ServiceCourseClient client = new ServiceCourseClient();
        Course[] courses;
        courses = client.GetAllCourses();
        CourseRegisterModel model = new CourseRegisterModel();
        //model = other model population here
        model.CourseList = courses.Select(sl => new SelectListItem() 
                                          {   Text = sl.Name, 
                                             Value = sl.CId })
                                  .ToList();
        return View(model);
    }

And finally, back to your view (RegisterCourses.cshtml) - it should contain:

@Html.DropDownListFor(m => m.Course.CId, Model.CourseList)

Andere Tipps

Use the Html.DropDownList method: http://msdn.microsoft.com/en-us/library/dd492738(v=vs.108).aspx

Pass in the desired name of the drop down list as first argument, as second argument pass in your CourseList:

@Html.DropDownList("CoursesList", Model.CoursesList)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top