我正在嘗試將一個串列從控制器傳遞給一個 ajax 函式,我需要顯示一個模態輪播影像。
該函式在我單擊影像時啟動,向 ajax 函式發送一個值,ajax 函式呼叫控制器中的 C# 方法,作為回報,我希望有一個我正在顯示的影像的路徑串列。
這是函式開始的 Html:
<div class="columnaPedido mb-3">
<img class="imgPedido" src="@pd.getImagenes()" onclick="GetImagenes(@pd.getNumeroEntrega())" data-img-mostrar="@cont" />
</div>
這是ajax函式:
function GetImagenes(entrega){
var i = 0;
console.log(entrega);
$.ajax({
method: "GET",
url: "GetPedidoImagenes",
contentType: "aplication/json; Charset=utf-8",
data: { 'entrega': entrega },
async: true,
success: function (result) {
console.log("Longitud: " result.length);
if (result == 0) {
alert("No hay Imagenes");
}
else {
while (i < result.length) {
console.log(result.count);
var carusel = document.getElementById("Entrega_" entrega);
if (i == 0) {
var div = document.createElement('div');
div.setAttribute('class', 'carousel-item active');
var img = document.createElement("img");
img.setAttribute('class', 'd-block w-100');
div.appendChild(img);
img.setAttribute('src', "/imgAndroid/" result[i].Path);
carusel.appendChild(div);
i ;
}
else {
var div = document.createElement('div');
div.setAttribute('class', 'carousel-item');
var img = document.createElement('img');
img.setAttribute('class', 'd-block w-100');
div.appendChild(img);
img.setAttribute('src', "/imgAndroid/" result[i].Path);
carusel.appendChild(div);
i ;
}
}
}
}
})
};
這是 C# 控制器方法:
[HttpGet]
public List<PedidoViewModel> GetPedidoImagenes(string entrega)
{
string consulta;
List<PedidoViewModel> listaPedidos = new List<PedidoViewModel>();
MySqlConnection connection = null;
try
{
consulta = "SELECT Path from Entrega WHERE Entrega = '" entrega "'";
using (connection = new MySqlConnection("datasource=" server ";database=" database ";" ";username=" user ";password=" password ";"))
{
MySqlCommand cmd = new MySqlCommand(consulta, connection);
connection.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
PedidoViewModel pedido = new PedidoViewModel();
pedido.setPathImagen(reader["Path"].ToString());
listaPedidos.Add(pedido);
}
}
return listaPedidos;
}catch(Exception ex)
{
throw new Exception(ex.Message);
}
}
這是PedidoViewModel:
[Keyless]
public class PedidoViewModel{
private string pathIamgenes;
public PedidoViewModel(){
pathIamgenes = "";
}
public string getImagenes() { return pathIamgenes; }
public void setPathImagen(string x) { pathIamgenes = x; }
}
如您所見,我將一個值從視圖傳遞給 ajax 函式,然后從 ajax 傳遞給控制器??,作為回報,我有一個包含路徑的串列,但陣列(稱為
result)是空的,但有合適的大小。
“合適的尺寸”是什么意思?如果有 2 個影像,result則有 2 個位置或 2 個大小。我如何檢查這個?有一個console.log(result):
(2) [{…}, {…}]
0:{}
1:{}
但正如你所看到的,陣列是空的,我希望有影像的路徑。
我哪里錯了?我已經為此作業了幾天,但找不到解決方案。
我是 Javascript 和 ajax 的新手,我沒有很多知識,但我認為我正在做的事情根本沒有錯。
編輯
我創建了一個public string path{get; set;},PedidoViewModel現在console.log(result)是這樣的:
(2) [{…}, {…}]
0:{path: null}
1:{path: null}
新PedidoViewModel:
[Keyless]
public class PedidoViewModel{
public string path{get; set;} = "";
}
uj5u.com熱心網友回復:
這個類沒有任何可序列化的屬性:
public class PedidoViewModel{
private string pathIamgenes;
public PedidoViewModel(){
pathIamgenes = "";
}
public string getImagenes() { return pathIamgenes; }
public void setPathImagen(string x) { pathIamgenes = x; }
}
它有一個欄位并具有與該欄位互動的方法。但總的來說,序列化程式正在尋找屬性。(ORM 等也是如此。屬性是 C# 中的標準。)
重構您的類以使用屬性,這大大簡化了它:
public class PedidoViewModel{
public string PathIamgenes { get; set; } = "";
}
然后該屬性將在 JSON 中序列化:
{
"PathIamgenes": ""
}
自然,需要調整使用這個類的其余代碼以利用它的新結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518081.html
上一篇:Golang中結構型別之間的轉換
