Asp.net 如何将列表(模型)作为SelectListItems传递给DropDownList HTML Helper?
我有一个模型来代表用户。我创建了一个helper类来返回这些用户的集合,如Asp.net 如何将列表(模型)作为SelectListItems传递给DropDownList HTML Helper?,asp.net,vb.net,asp.net-mvc-2,html-helper,Asp.net,Vb.net,Asp.net Mvc 2,Html Helper,我有一个模型来代表用户。我创建了一个helper类来返回这些用户的集合,如List(of Users) 我是这样做的 Function getDoctorsList() As List(Of Users) Dim userCollection As New List(Of Users) Dim sql = "SELECT * FROM " + _tblName + " WHERE usertype = 'doctor'" Dim dr As SqlDataReader =
List(of Users)
我是这样做的
Function getDoctorsList() As List(Of Users)
Dim userCollection As New List(Of Users)
Dim sql = "SELECT * FROM " + _tblName + " WHERE usertype = 'doctor'"
Dim dr As SqlDataReader = dbHelper.ExecuteAndGetReader(sql)
While dr.Read
Dim user As New Users
user.Id = IIf(IsDBNull(dr("id")), 0, dr("id"))
user.UserName = IIf(IsDBNull(dr("username")), "", dr("username"))
user.UserNin = IIf(IsDBNull(dr("user_nin")), 0, dr("user_nin"))
user.UserType = IIf(IsDBNull(dr("usertype")), "", dr("usertype"))
user.Password = IIf(IsDBNull(dr("password")), "", dr("password"))
userCollection.Add(user)
End While
Return userCollection
End Function
我抓取它们,并将它们从控制器发送到查看,如下所示:
ViewData("LoginUserModel") = New LoginUser
ViewData("doctorList") = usersHelper.getDoctorsList
现在,Model有两个属性Id
和UserName
,我想分别用作值和文本
我试过类似的方法,但这会给类型转换带来问题。所以我显然做错了
<%= Html.DropDownList("doctors", ViewData("doctorList")) %>
如何将列表作为SelectListItems传递到DropDownList?您可以使用LINQ将
列表(用户)
投影到IEnumerable(SelectListItem)
:
或者您也可以使用SelectList
构造函数:
ViewData("doctorList") = New SelectList(usersHelper.getDoctorsList(), "Id", "UserName")
在你看来:
<%= Html.DropDownList(
"doctors",
CType(ViewData("doctorList"), IEnumerable(Of SelectListItem))
) %>
但是我建议您使用视图模型,而不是ViewData
<%= Html.DropDownList(
"doctors",
CType(ViewData("doctorList"), IEnumerable(Of SelectListItem))
) %>