In my MVC Project, I have a Course model looks like this:
public class Course
{
[Key]
public int CourseId { get; set; }
[Required, MaxLength(50)]
public string Name { get; set; }
// bunch of other properties
}
I'm creating a SelectList for some Courses in my Action
var user = context.Users.Include("Courses")
.FirstOrDefault(x => x.Email == User.Identity.Name);
var courses = user.Courses.OrderBy(x => x.Name);
ViewBag.Courses = new SelectList(courses, "CourseId", "Name");`
I have a nullable courseId parameter in my Action like this:
public ActionResult Index(int? courseId)
If it's not null, I want to change the default selected value to that course.In order to do this I tried:
if (courseId != null)
{
var selectedCourse = courses
.FirstOrDefault(x => x.CourseId == courseId.Value);
if (selectedCourse != null)
{
ViewBag.Courses = new SelectList(courses, "CourseId", "Name", selectedCourse.CourseId);
}
}
But it doesn't work and selectedCourse is not null.Instead of specified Course I see the first course in my list selected every time.What am I missing ?
Edit: I'm creating DropdownList in my View like this:
@Html.Bootstrap().DropDownList("Courses", (SelectList)ViewBag.Courses)