@Html.displayname不显示数据MVC5



我已经到处找了,但没有找到解决我确切问题的办法。

public class PageDetailsViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Image { get; set; }
}
控制器

 public ActionResult Search(int SysID)
    {
      var query = from r in _db.Auctions
      from d in _db.Product_Details
      where SysID == d.Id && r.BidStatus == "Open" && d.Id == r.Product_DetailsId
      select new PageDetailsViewModel
      {                            
          Name = d.Name,
          Description = d.Description,
          Image = d.Image
      };
    return View(query);
    }
<<p> 视图/strong>
@model IEnumerable<ProjectT.Models.PageDetailsViewModel>
@Html.DisplayNameFor(x => x.Name)

这不能使名称通过。但是,如果我使用foreach

@foreach (var item in Model)
{
      @item.Name
}

它带来的名字没有问题。

这个扩展方法显示DataAnnotations命名空间的DisplayNameAttribute的值。把这当成一个标签。通常是这样使用的:

[DisplayName("The Name")]
public string Name { get; set; }

在视图中:

@Html.DisplayNameFor(x => x.Name)                     <-- displays The Name

上面的代码只有在模型是单个项目时才有效。对于列表的情况,你需要做一些技巧,比如一个For循环,你可以这样做:

@Html.DisplayNameFor(x => x[i].Name): @Model[i].Name <-- displays The Name: Bill

最新更新