0

我正在尝试使以下工作

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 和字符串填充 SelectList 并将其传递给视图?

4

1 回答 1

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)
于 2012-08-14T21:39:01.370 回答