簡體   English   中英

ASP.NET Core 6.0 MVC - 從列表中填充視圖模型

[英]ASP.NET Core 6.0 MVC - Populating a viewmodel from list

目前,我正在涉足 ASP.NET Core 6.0,但一直在嘗試填充視圖模型。

我有以下 linq(?) 查詢(它甚至被稱為?)

var fotoGeneratedNames = _context.Foto 
                                 .Where(x => fotoIds.Contains(x.Id))
                                 .Select(x => x.generatedName)
                                 .ToList();

控制器代碼

// Diese Methode gibt die notwendigen Daten für eine spezifische Gallerie zurück 
public IActionResult Gallerie(int id) 
{ 
    // instantiert neue Var mit dem Expose Viewmodel Gallerie
    // var viewModelExposeGallerie = new ViewModelExposeGallerie(); 

    // nimm gallerieId, such alle FotoIds aus associationtable raus
    var fotoIds = (from a in _context.GallerieFoto 
                   where a.GallerieId == id select a.FotoId).ToList();

    // Nimm alle elemente in der tabelle Foto mit den Elementen in fotoIds und mach eine Liste mit den generiertenNamen der Fotos
    var fotoGeneratedNames = _context.Foto
                                     .Where(x => fotoIds.Contains(x.Id))
                                     .Select(x => x.generatedName)
                                     .ToList();

    return View(fotoGeneratedNames);
}  

這是我的視圖模型

namespace abc.Models
{
    public class ViewModelExposeGallerie
    {
        public string FotoName { get; set; }    
    }
}

現在-我嘗試的是類似於

foreach var x in fotoGeneratedNames 
    ViewModelExposeGallerie.FotoName = fotoGeneratedNames 

但這只是替換了值,並沒有給我一個可以在視圖中使用的列表。

感謝您的任何提示,祝您好運!

在您的控制器中:

public IActionResult Gallerie(int id) { 

    ...
             
    var fotoGeneratedNames = _context.Foto
        .Where(x => fotoIds.Contains(x.Id))
        .Select(x => x.generatedName)
        .ToList();

    return View(fotoGeneratedNames);
}  

您正在返回List<string>但不是List<ViewModelExposeGalleri>類型

您的視圖應如下所示:

@model IEnumerable<string>

@foreach (var name in Model)
{
    <div>@name</div>
}

不確定要為 HTML 元素呈現什么,所以我用<div>元素來說明演示。


如果您從控制器返回List<ViewModelExposeGalleri>

public IActionResult Gallerie(int id) { 

    ...
             
    var fotoGeneratedList = _context.Foto
        .Where(x => fotoIds.Contains(x.Id))
        .Select(x => new ViewModelExposeGallerie
        {
            FotoName = x.generatedName
        })
        .ToList();

    return View(fotoGeneratedList);
} 
@model IEnumerable<abc.models.ViewModelExposeGalleri>

@foreach (var item in Model)
{
    <div>@item.FotoName</div>
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM