0

表示しようとしている画像の URL のリストがあります。コントローラーからビューにリストを渡しています。リストが正常に作成されていることはわかっています。しかし、ビューに到達すると、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のアドバイスはある程度機能しましたが、完全ではありません

4

2 に答える 2

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);
}
于 2013-06-07T05:14:47.277 に答える
0

取得

System.Collections.Generic.List`1[System.String]

あなたはモデル値 PicUrls であるため、デフォルトの ToString() 実装はその型を返すことです。

PicUrls を JSON 文字列として保存し、js で JavaScript 配列に解析できます。

public ActionResult Index() { var pics = _ctx.Image.Select(m => 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');
于 2013-06-07T05:10:56.653 に答える