если вы посмотрите на источник вашей страницы после загрузки страницы, вы увидите, что ваш верхний набор элементов из значения вашей viewbag не имеет значения только для текста, поэтому при отправке он думает, что вы отправляете пустое.Я сталкивался с этим раньше.
Что вам нужно сделать, это вручную создать каждый из выпадающих списков, перебирая коллекцию и устанавливая тот, который соответствует вашему элементу viewbag, выбранным, таким образом, вы можете быть уверены, чтовыбранный элемент имеет выбранное значение.У меня где-то здесь есть код Razr.Обновлюсь, когда найду его.
РЕДАКТИРОВАТЬ
<select name="Type1" id="Type1">
<option value=""></option>
@foreach (var name in ViewBag.BackOfficeTypes)
{
if (name == ViewBag.SelectedType1Value)
{
<option value="@name" selected="selected">@name</option>
}
else
{
<option value="@name">@name</option>
}
}
</select>
У меня есть несколько таких на одной странице, построенных из разных наборов предметов.Надеюсь, это поможет.
РЕДАКТИРОВАТЬ 2
Если вы хотите сделать все это из codebehind, я не VB парень, но вот способ сделать это, но вам нужноизменить свой оператор linq, чтобы вручную создавать элементы списка вместо дампа из метода toList.
var courses = db.getCourses();
IEnumerable<SelectListItem> selectList =
from c in courses
where c.course_day = "Tuesday"
select new SelectListItem
{
Selected = (c.CourseID == selectedCourseID),
Text = c.Name,
Value = c.CourseID.ToString()
};
Если вы можете перевести это в эквивалент VB, это может решить вашу проблему, а не создавать их в конце Razor..