Контроллер MVC и Com-объект VB .Net
У меня есть разработка, где я сделал Com dll для связи с Centura SQLBase:
COM DLL Code
adaptor.SelectCommand() = New SQLBaseCommand("SELECT COMPANY_ID,COMPANY_NAME FROM COMPANY", myConnection)
Dim ds = New DataSet()
adaptor.Fill(ds, "COMPANY")
Dim myArray As New ArrayList
For Each row As DataRow In ds.Tables(0).Rows
myArray.Add(row)
Next
MsgBox(myArray(1).Item(0)) //This shows 102
MsgBox(myArray(1).Item(1)) //This shows Maui Mu-Mus
Return myArray
Так myArray
хранит правильные значения; Однако в моем контроллере MVC я получил arrayList с 23 строками (что нормально), но все они пустые.
Вот мой Controller Code GET: /Gupta/GetCiudades
Function GetCiudades() As JsonResult
Dim objConn As Object
objConn = Server.CreateObject("TestGupta.ComClass1")
Dim ciudadJson As ArrayList = objConn.getCompanies()
Return Json(ciudadJson, JsonRequestBehavior.AllowGet)
End Function
Ajax Code
:
$.getJSON("Gupta/GetCiudades", null, function (ciudades) {
ciudades = (JSON.stringify(ciudades));
console.log(ciudades);
});
console.log Result:
[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
Вопрос в том, что если в объекте com отображаются правильные значения, то почему в контроллере строки пусты?
1 ответ
Решение
Исправлена:
Код Com+:
Public Function getCompanies()
Dim myConnection As SQLBaseConnection = New SQLBaseConnection()
myConnection.ConnectionString = getConn ' Obtenemos la cadena de conexion desde el get
'Abrimos la conexion con Gupta
myConnection.Open()
Dim adaptor = New SQLBaseDataAdapter
adaptor.SelectCommand() = New SQLBaseCommand("SELECT COMPANY_ID,COMPANY_NAME FROM COMPANY", myConnection)
Dim ds = New DataSet()
adaptor.Fill(ds, "COMPANY")
myConnection.Close()
Return ds
End Function
Вызов контроллера
Dim ds = objConn.getCompanies()
Dim arrayInformaticos As New ArrayList
For i = 0 To ds.Tables(0).Rows.Count - 1
arrayInformaticos.Add(New Informatico(ds.Tables(0).Rows(i).Item(0), ds.Tables(0).Rows(i).Item(1)))
Next
Return Json(arrayInformaticos, JsonRequestBehavior.AllowGet)
Решение основано на ArrayList объектов в контроллере, и теперь метод Com возвращает набор данных.