如何在视图中显示IEnumerable?
How to display IEnumerable in view?
我正在为产品做评论部分,但在显示评论视图时遇到了一些问题。我从 2 个模型制作模型以在一个视图中显示它们,但是我将 IEnumerable 显示为列表的方式让我出错。我如何修改我的代码才能使其正常工作?
型号
public class DetailsViewModel
{
public Product Product { get; set; }
public IEnumerable<Comments> Comments { get; set; }
}
控制器
public ActionResult ProductDetails(int? id)
{
DetailsViewModel detailsViewModel = new DetailsViewModel();
detailsViewModel.Product = db.Product.Find(id);//this is working
detailsViewModel.Comments = db.Comments.Where(c => c.Id_Product == id).OrderBy(x => x.DateComment).ToList();
return View(detailsViewModel);
}
查看
@model Database.Models.DetailsViewModel
<ul>
@Html.DisplayFor(x => x.Comments.DateComment) //getting error here 'IEnumerable<Comments>'
@Html.DisplayFor(x => x.Comments.Comment) // does not containt definiton for 'Comment'
<ul>
我想得到这样的东西:
2019-06-25:Foo
2019-06-25:FooFoo
为您的 Comment 模型创建一个 DisplayTemplate,然后只需使用
@Html.DisplayFor(x => x.Comments)
这将遍历它们并使用 DisplayTemplate 呈现每个。
您可以使用 foreach
循环来实现您的功能。 foreach 循环将迭代您的 IEnumerable
并显示列表中的每个元素。针对你的情况,你可以这样做:
<ul>
@foreach(var comment in Model.Comments)
{
<li>@comment.DateComment</li>
<li>@comment.Comment</li>
}
<ul>
我正在为产品做评论部分,但在显示评论视图时遇到了一些问题。我从 2 个模型制作模型以在一个视图中显示它们,但是我将 IEnumerable 显示为列表的方式让我出错。我如何修改我的代码才能使其正常工作?
型号
public class DetailsViewModel
{
public Product Product { get; set; }
public IEnumerable<Comments> Comments { get; set; }
}
控制器
public ActionResult ProductDetails(int? id)
{
DetailsViewModel detailsViewModel = new DetailsViewModel();
detailsViewModel.Product = db.Product.Find(id);//this is working
detailsViewModel.Comments = db.Comments.Where(c => c.Id_Product == id).OrderBy(x => x.DateComment).ToList();
return View(detailsViewModel);
}
查看
@model Database.Models.DetailsViewModel
<ul>
@Html.DisplayFor(x => x.Comments.DateComment) //getting error here 'IEnumerable<Comments>'
@Html.DisplayFor(x => x.Comments.Comment) // does not containt definiton for 'Comment'
<ul>
我想得到这样的东西:
为您的 Comment 模型创建一个 DisplayTemplate,然后只需使用
@Html.DisplayFor(x => x.Comments)
这将遍历它们并使用 DisplayTemplate 呈现每个。
您可以使用 foreach
循环来实现您的功能。 foreach 循环将迭代您的 IEnumerable
并显示列表中的每个元素。针对你的情况,你可以这样做:
<ul>
@foreach(var comment in Model.Comments)
{
<li>@comment.DateComment</li>
<li>@comment.Comment</li>
}
<ul>