如果值未更改,则多个下拉列表都需要空值...还需要选择的值为默认值

时间:2011-10-28 23:31:06

标签: asp.net-mvc vb.net asp.net-mvc-3 razor

1 个答案:

答案 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结束时构建它们。