我想在局部视图中获取模型类型的名称和模型列表的标题,但@ genre.Lists.Title不起作用 这是我的流派模型
public class Genre
{
public int GenreId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<List> Lists { get; set; }
}
这是我的List模型
[Bind(Exclude = "ListId")]
public class List
{
[ScaffoldColumn(false)]
public int ListId { get; set; }
[DisplayName("Genre")]
public int GenreId { get; set; }
[DisplayName("Maker")]
public int MakerId { get; set; }
[Required(ErrorMessage = "An List Title is required")]
[StringLength(160)]
public string Title { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00,ErrorMessage = "Price must be between 0.01 and 100.00")]
public decimal Price { get; set; }
[DisplayName("List URL")]
[StringLength(1024)]
public string ListUrl { get; set; }
public Genre Genre { get; set; }
public Maker Maker { get; set; }
public virtual List<OrderDetail> OrderDetails { get; set; }
}
这是我的actionResult
public ActionResult Navbar()
{
var genres = storeDB.Genres.Include("Lists").ToList();
return PartialView("Navbar",genres);
}
这是我的PartialView
@model IEnumerable<Store.Models.Genre>
@foreach (var genre in Model)
{
@genre.Name
@genre.Lists.Title
}
答案 0 :(得分:2)
@genre.Lists
的类型为List<List>
,而不是List
(顺便说一下,我会以某种方式重命名您的类,它很容易与此标准库类混淆名称)。
因此,您需要另一个foreach
循环来迭代@genre.Lists
,或者您可以使用@genre.Lists[0].Title
获取第一个元素。它取决于你真正想要实现的目标。例如,您可以使用string.Join
:
@model IEnumerable<Store.Models.Genre>
@foreach (var genre in Model)
{
<text>
@genre.Name
@string.Join(", ", genre.Lists.Select(x => x.Title))
</text>
}
或者写一些真正的HTML。同样,取决于你想要的输出。