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
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);
}
您 return 正在 List<string>
但不是 List<ViewModelExposeGalleri>
类型
您的看法应该如下:
@model IEnumerable<string>
@foreach (var name in Model)
{
<div>@name</div>
}
不确定要为 HTML 元素呈现什么,所以我用 <div>
元素来说明演示。
如果您 return 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>
}
目前我正在涉足 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; }
}
}
现在 - 我尝试的是类似于
的 foreachforeach 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);
}
您 return 正在 List<string>
但不是 List<ViewModelExposeGalleri>
类型
您的看法应该如下:
@model IEnumerable<string>
@foreach (var name in Model)
{
<div>@name</div>
}
不确定要为 HTML 元素呈现什么,所以我用 <div>
元素来说明演示。
如果您 return 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>
}