填充列表不起作用的功能

时间:2012-08-14 21:36:23

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

我正在努力让以下工作

Function AddService(id As Integer) As ViewResult
        Dim serv As RequestedService = New RequestedService
        serv.JobId = id

        Dim ServiceList = New List(Of RequestedService)()

        Dim ServiceQuery = From s In db.Services
                   Select s

        ServiceList.AddRange(ServiceQuery)

        ViewBag.ServiceId = New SelectList(ServiceList, s.IDServices, s.ServiceName)

        Return View(serv)
    End Function

但是

        ViewBag.ServiceId = New SelectList(ServiceList, s.IDServices, s.ServiceName)

给我以下错误:'s'未声明。由于其保护级别,它可能无法访问。

我无法弄清楚如何纠正这个问题。基本上我需要使用id和string填充SelectList并将其传递给视图?

1 个答案:

答案 0 :(得分:0)

假设RequestedService模型具有名为IDServicesServiceName的属性,您可以使用以下内容:

ViewBag.ServiceId = New SelectList(ServiceList, "IDServices", "ServiceName")

但你真的不需要这个中间名单:

Function AddService(id As Integer) As ViewResult
    Dim serv As RequestedService = New RequestedService
    serv.JobId = id

    ViewBag.ServiceId = New SelectList(db.Services, "IDServices", "ServiceName")

    Return View(serv)
End Function

你真的,真的,真的不需要使用ViewBag,而是使用视图模型。

Function AddService(id As Integer) As ViewResult
    Dim model = New RequestedServiceViewModel
    model.JobId = id
    model.Services = New SelectList(db.Services, "IDServices", "ServiceName")
    Return View(model)
End Function

现在您的视图强烈输入到视图模型中:

@ModelType RequestedServiceViewModel
@Html.DropDownListFor(Function(x) x.ServiceId, Model.Services)