【发布时间】:2017-02-01 10:09:11
【问题描述】:
继续我之前的问题,我将 id 值从“查找”控制器传递到另一个控制器方法“费用”。
Function Charges(id As String) As ActionResult
Dim Patient As New LookupVM()
Patient.GetHistory(paid)
Return View(Patient)
End Function
在视图模型中,我有 GetHistory(id) 列表方法,而 listProcedure 是包含我想要传递回控制器以在视图中显示的值的列表。
Public Property listProcedure As List(Of LookupVM)
Public Function GetHistory(id As String) As List(Of LookupVM)
Using db As New DbContext()
' SQL query
'====================
Dim idd = New SqlParameter("@id", "%" & id & "%")
Dim query As String = "select p.id id, pv.pvid pvid
from patient p
join patient_visit pv on p.id = pv.id
where p.paid like @id"
Dim Results = db.Database.SqlQuery(Of LookupVM)(query, idd).ToList()
For Each item In Results
Dim pvid = New SqlParameter("@pvid", "%" & item.pvid & "%")
Dim query2 As String = "select po.remarks remarks, po.entereddt entereddt, po.Consultant Consultant
from procedure_order po
join procedures p on po.pdid = p.pdid
where po.pvid like @pvid
order by po.entereddt desc"
Dim Results2 = db.Database.SqlQuery(Of LookupVM)(query2, pvid).ToList()
For Each item2 In Results2
Dim ProcedureList2 As New LookupVM()
ProcedureList2.remarks = item2.remarks
ProcedureList2.entereddt = item2.entereddt
ProcedureList2.ForConsultant = item2.ForConsultant
listProcedure.Add(ProcedureList2)
Next
Next
Return listProcedure
End Using
End Function
我想知道我是否能够通过列表以外的其他方式将这些值传递给控制器。如果可能,它会是什么?因为如果它是一个列表,我无法在不使用 foreach 循环的情况下将它们显示在页面上。
另一个问题是,我的代码在概念上是正确还是错误?因为当我运行时,我花了 5 分钟来显示包含上述代码的 72 个值的列表。我觉得时间太长了。有什么办法让它加载更快?
【问题讨论】:
标签: sql-server vb.net asp.net-mvc-viewmodel