答案 0 :(得分:1)
如果您在加载页面后查看页面源,您将看到您的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
如果你想从代码隐藏中做到这一切我不是一个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结束时构建它们。