我有一个我想要显示的图片网址列表。我将列表从控制器传递给视图。我知道列表正在成功创建。但是当它进入视图时,javascript将其解释为“*System.Collections.Generic.List
1 [System.String] *`”而不是实际列表。这会导致图像无法显示。
以下是我用于将列表分配给js变量的代码行:
var imageUrls = '@Model.PicUrls';
和控制器
public ActionResult Index()
{
var pics = _ctx.Image.Select(m => m).Take(10).ToList<ImageModel>();
var picUrls = new List<string>();
for (int i = 0; i <= pics.Count - 1; i++)
{
picUrls.Add(pics[i].ImageUrl);
}
var outModel = new ViewPostViewModel
{
PicUrls = picUrls
};
return View(outModel);
我试图返回一个Json对象,但之后只显示的页面是已完成的列表。
return Json(outModel.PicUrls, JsonRequestBehavior.AllowGet);
所以,Json的建议有些作用,但它并不完全存在
答案 0 :(得分:0)
获得
System.Collections.Generic.List`1 [System.String]
因为你是模型值PicUrls默认的ToString()实现是返回它的类型。
您可以将PicUrls存储为JSON字符串,然后解析为js中的javascript数组。
公共ActionResult索引() { var pics = _ctx.Image.Select(m =&gt; m).Take(10)。ToList();
var picUrls = String.Empty;
for (int i = 0; i <= pics.Count - 1; i++)
{
picUrls += (picUrls != String.Empty ? ", " : "") + @"""" + pics[i].ImageUrl + @"""";
}
var outModel = new ViewPostViewModel
{
PicUrls = @"[" + picUrls + "]";
};
return View(outModel);
在你的js中,使用
var imageUrls = JSON.parse('@Model.PicUrls');
答案 1 :(得分:0)
试试吧
public ActionResult Index()
{
var pics = _ctx.Image.Select(m => m.ImageUrl)
.Take(10).ToList();
var picUrls = new List();
for (int i = 0; i <= pics.Count - 1; i++)
{
picUrls.Add(pics[i]);
}
var outModel = new ViewPostViewModel
{
PicUrls = picUrls
};
return Json(outModel.PicUrls, JsonRequestBehavior.AllowGet);
}