2012-08-14 124 views
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并将其传递给视图?

回答

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)