'数据库取
'控制器 GET: /DorList/
Private Sub GetDorlist() '写入查询字段到ViewData
Dim DorList As New List(Of SelectListItem)
Dim q = (From m In db.Dormitory Select New With {m.DorNo, m.Num_Bed})
For Each m In q
DorList.Add(New SelectListItem() With {.Text = m.DorNo, .Value = m.DorNo})
Next
ViewData("DorList") = DorList
End Sub
Controller
public ActionResult Index()
{
var SelectItems = new List<dynamic>(){
new { id = 1, name="society"},
new { id = 2, name="Asp.NET"},
new { id = 3, name="C++"},
new {id=4,name="DataBase"}
};
//单填加方法
listItem.Add(new SelectListItem { Text = "5", Value = "MVC" });
//SelectList : 使用SelectList辅助类构建(可不用)
ViewBag.SelectItem = new SelectList(SelectItems, "id", "name", 2);
//使用SelectListItem对象集合
var SexItems = new List<SelectListItem> {
// new SelectListItem{ Text="男", Value="1", Selected=true},
// new SelectListItem{ Text="女", Value="0"}
};
return View(SexItems);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "UserID,AchievementID,AchievementName,score,AchieveTime,Description")] Achievement achievement)
{
if (ModelState.IsValid)
{
MDB.Add(achievement);
MDB.Save();
//db.Achievement.Add(achievement);
//db.SaveChanges();
return RedirectToAction("Index");
}
else //自定义接口类中当验证失败时同样需要回传用户选择值到页面,否则经常出现
//ViewData 项属于类型“System.String”,但它必须属于类型“IEnumerable<SelectLis的误导
{
ViewBag.List = new SelectList(listItem, "Text", "Value");
}
return View(achievement);
}
View
@Html.DropDownList("SelectItem", ViewBag.SelectItem as IEnumerable<SelectListItem>,"---sdfsdfsdfsdf---", new { id = "person_id" })
<!--视图部分-->
<div class="editor-label">
@Html.LabelFor(Function(model) model.DorNo)
</div>
<div class="editor-field">
@Html.DropDownListFor(Function(m) Model.DorNo, TryCast(ViewData("DorList"), List(Of SelectListItem)), "---宿舍选择---")
@Html.ValidationMessageFor(Function(model) model.DorNo)
</div>