Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将列表(模型)作为SelectListItems传递给DropDownList HTML Helper?_Asp.net_Vb.net_Asp.net Mvc 2_Html Helper - Fatal编程技术网

Asp.net 如何将列表(模型)作为SelectListItems传递给DropDownList HTML 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 =

我有一个模型来代表用户。我创建了一个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 = 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))
) %>