我正在努力让以下工作
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并将其传递给视图?
答案 0 :(得分:0)
假设RequestedService
模型具有名为IDServices
和ServiceName
的属性,您可以使用以下内容:
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)