如何在 ASP.NET Core 6.0 MVC 中为视图内的 @model 赋予 2 个列表的值
How to give the @model inside the view a value of 2 lists in ASP.NET Core 6.0 MVC
None 到目前为止我在互联网上找到的解决方案对我有用。
如何在视图中为这个 @model
赋予 2 个列表的值?
@using BusnLogicLaag
@model List<Outfit>
我还想添加一个列表:List<Onderdeel>
。
这是我的两个 类:
/// <summary>
/// Onderdeel heeft unieke categorien, ook heeft deze een ID
/// Bij een onderdeel horen ook bepaalde reviews
/// </summary>
public class Onderdeel : Kleding
{
public enum OnderdeelCategory
{
Broek,
Shirt,
Bloes,
Schoen,
Jurk
}
public int ID { get; set; }
public List<Review> Reviews { get; set; } = new List<Review>();
public OnderdeelCategory DeCategory { get; }
public Onderdeel(int id, string titel, int prijs, OnderdeelCategory category, string fileAdress) : base(titel, prijs, fileAdress)
{
DeCategory = category;
this.ID = id;
}
public Onderdeel(OnderdeelDTO dto) : base(dto.Titel, dto.Prijs, dto.FileAdress)
{
DeCategory = (Onderdeel.OnderdeelCategory)dto.DeCategory;
this.ID = dto.ID;
}
internal OnderdeelDTO GetDTO()
{
OnderdeelDTO dto = new OnderdeelDTO(ID, Titel, Prijs, (OnderdeelDTO.OnderdeelCategory)DeCategory, FileAdress);
return dto;
}
public override string ToString()
{
return base.ToString() + $"\nCategory: {DeCategory}";
}
}
/// <summary>
/// Outfit heeft unieke categorien
/// Outfit heeft ook een ID en bij een outfit kunnen meerdere reviews horen
/// </summary>
public class Outfit : Kleding
{
public enum OutfitCategory
{
Trendy,
Chic,
Oldschool,
Casual
}
public int ID { get; set; }
public OutfitCategory DeCategory { get; set; }
public Outfit(int id, string titel, int prijs, OutfitCategory category, string fileAdress) : base(titel, prijs, fileAdress)
{
DeCategory = category;
this.ID = id;
}
public Outfit(OutfitDTO dto) : base(dto.Titel, dto.Prijs, dto.FileAdress)
{
DeCategory = (Outfit.OutfitCategory)dto.DeCategory;
ID = dto.ID;
}
internal OutfitDTO GetDTO()
{
OutfitDTO dto = new OutfitDTO(ID, Titel, Prijs, (OutfitDTO.OutfitCategory)DeCategory, FileAdress);
return dto;
}
public override string ToString()
{
return base.ToString() + $"\nCategory: {DeCategory}";
}
}
它们的命名空间是BusnLogicLaag
。
所以重点是让该视图访问 2 个对象列表,这些对象是 Onderdeel
和 Outfit
。
提前致谢!
您可以创建一个新的 ViewModel 来包裹 Onderdeel
和 Outfit
,然后直接在视图中使用这个 ViewModel。
下面是我的测试代码:
Onderdeel:
public class Onderdeel
{
public enum OnderdeelCategory
{
Broek,
Shirt,
Bloes,
Schoen,
Jurk
}
public int ID { get; set; }
}
服装:
public class Outfit
{
public enum OutfitCategory
{
Trendy,
Chic,
Oldschool,
Casual
}
public int ID { get; set; }
}
视图模型:
public class TestModel
{
public List<Outfit> outfits { get; set; }
public List<Onderdeel> onderdeels { get; set; }
}
控制器:
public IActionResult Test()
{
List<Onderdeel> onderdeel = new List<Onderdeel>();
onderdeel.Add(new Onderdeel { ID = 1 });
onderdeel.Add(new Onderdeel { ID = 2 });
onderdeel.Add(new Onderdeel { ID = 3 });
List<Outfit> outfits = new List<Outfit>();
outfits.Add(new Outfit { ID = 4 });
outfits.Add(new Outfit { ID = 5 });
outfits.Add(new Outfit { ID = 6 });
var viewmodel = new TestModel
{
onderdeels = onderdeel,
outfits = outfits
};
return View(viewmodel);
}
查看:
@using _2022053001.Models
@model TestModel
<div>
@foreach(var item in Model.onderdeels)
{
<div>@item.ID</div>
<select class="form-control" asp-items="Html.GetEnumSelectList<Onderdeel.OnderdeelCategory>()"></select>
}
</div>
<div>
@foreach(var item in Model.outfits)
{
<div>@item.ID</div>
<select class="form-control" asp-items="Html.GetEnumSelectList<Outfit.OutfitCategory>()"></select>
}
</div>
测试结果:
None 到目前为止我在互联网上找到的解决方案对我有用。
如何在视图中为这个 @model
赋予 2 个列表的值?
@using BusnLogicLaag
@model List<Outfit>
我还想添加一个列表:List<Onderdeel>
。
这是我的两个 类:
/// <summary>
/// Onderdeel heeft unieke categorien, ook heeft deze een ID
/// Bij een onderdeel horen ook bepaalde reviews
/// </summary>
public class Onderdeel : Kleding
{
public enum OnderdeelCategory
{
Broek,
Shirt,
Bloes,
Schoen,
Jurk
}
public int ID { get; set; }
public List<Review> Reviews { get; set; } = new List<Review>();
public OnderdeelCategory DeCategory { get; }
public Onderdeel(int id, string titel, int prijs, OnderdeelCategory category, string fileAdress) : base(titel, prijs, fileAdress)
{
DeCategory = category;
this.ID = id;
}
public Onderdeel(OnderdeelDTO dto) : base(dto.Titel, dto.Prijs, dto.FileAdress)
{
DeCategory = (Onderdeel.OnderdeelCategory)dto.DeCategory;
this.ID = dto.ID;
}
internal OnderdeelDTO GetDTO()
{
OnderdeelDTO dto = new OnderdeelDTO(ID, Titel, Prijs, (OnderdeelDTO.OnderdeelCategory)DeCategory, FileAdress);
return dto;
}
public override string ToString()
{
return base.ToString() + $"\nCategory: {DeCategory}";
}
}
/// <summary>
/// Outfit heeft unieke categorien
/// Outfit heeft ook een ID en bij een outfit kunnen meerdere reviews horen
/// </summary>
public class Outfit : Kleding
{
public enum OutfitCategory
{
Trendy,
Chic,
Oldschool,
Casual
}
public int ID { get; set; }
public OutfitCategory DeCategory { get; set; }
public Outfit(int id, string titel, int prijs, OutfitCategory category, string fileAdress) : base(titel, prijs, fileAdress)
{
DeCategory = category;
this.ID = id;
}
public Outfit(OutfitDTO dto) : base(dto.Titel, dto.Prijs, dto.FileAdress)
{
DeCategory = (Outfit.OutfitCategory)dto.DeCategory;
ID = dto.ID;
}
internal OutfitDTO GetDTO()
{
OutfitDTO dto = new OutfitDTO(ID, Titel, Prijs, (OutfitDTO.OutfitCategory)DeCategory, FileAdress);
return dto;
}
public override string ToString()
{
return base.ToString() + $"\nCategory: {DeCategory}";
}
}
它们的命名空间是BusnLogicLaag
。
所以重点是让该视图访问 2 个对象列表,这些对象是 Onderdeel
和 Outfit
。
提前致谢!
您可以创建一个新的 ViewModel 来包裹 Onderdeel
和 Outfit
,然后直接在视图中使用这个 ViewModel。
下面是我的测试代码:
Onderdeel:
public class Onderdeel
{
public enum OnderdeelCategory
{
Broek,
Shirt,
Bloes,
Schoen,
Jurk
}
public int ID { get; set; }
}
服装:
public class Outfit
{
public enum OutfitCategory
{
Trendy,
Chic,
Oldschool,
Casual
}
public int ID { get; set; }
}
视图模型:
public class TestModel
{
public List<Outfit> outfits { get; set; }
public List<Onderdeel> onderdeels { get; set; }
}
控制器:
public IActionResult Test()
{
List<Onderdeel> onderdeel = new List<Onderdeel>();
onderdeel.Add(new Onderdeel { ID = 1 });
onderdeel.Add(new Onderdeel { ID = 2 });
onderdeel.Add(new Onderdeel { ID = 3 });
List<Outfit> outfits = new List<Outfit>();
outfits.Add(new Outfit { ID = 4 });
outfits.Add(new Outfit { ID = 5 });
outfits.Add(new Outfit { ID = 6 });
var viewmodel = new TestModel
{
onderdeels = onderdeel,
outfits = outfits
};
return View(viewmodel);
}
查看:
@using _2022053001.Models
@model TestModel
<div>
@foreach(var item in Model.onderdeels)
{
<div>@item.ID</div>
<select class="form-control" asp-items="Html.GetEnumSelectList<Onderdeel.OnderdeelCategory>()"></select>
}
</div>
<div>
@foreach(var item in Model.outfits)
{
<div>@item.ID</div>
<select class="form-control" asp-items="Html.GetEnumSelectList<Outfit.OutfitCategory>()"></select>
}
</div>
测试结果: