使用剃刀视图中的集合中只有2个元素
问题描述:
有没有办法在剃刀视图中只使用2个或任何其他特定数量的元素? 我想用这样的事情在我看来:使用剃刀视图中的集合中只有2个元素
@Html.DisplayFor(x => x.Authors.Take(2))
我知道我可以通过创建一个模型,一个新的属性,并指定有规则实现这一目标,但是这不是我所期待的。就我而言,这个特定模型有很多观点,每个模型都有不同数量的元素。
我也很想知道为什么上面的例子不起作用。 谢谢
答
你可以通过循环模型数组来实现这一点。
事情是这样的:
@for(int i=0; i < YOUR_SPECIFED_AMOUNT_OF_ELEMENT; i++){
@Html.DisplayFor(x => x.Authors[i])
}
答
我希望你提供的,如果你在Authors
集合定义元素的类型diplay模板工作的例子(让我们assumet该类型是Author
)。如果你有IEnumerable<Author>
(或实现类型如List<Author>
等),那么MVC框架应该使用该集合的每个元素该显示模板自身(因为这是集合的默认行为/默认显示模板DisplayFor
)。
所以假设Author
被定义为这样:
public class Author {
public string FirstName { get; set; }
public string LastName { get; set; }
}
你定义的显示模板〜/查看/共享/ DisplayTemplate/Author.cshtml这样:
@model Author
@Html.DisplayFor(a => a.FirstName)
@Html.DisplayFor(a => a.LastName)
然后,如果你使用从你的例子中的代码,我会假设在你的例子中得到的HTML将是相同/相似的,如果你使用:
@Html.DisplayFor(a => a.Authors.First())
@Html.DisplayFor(a => a.Authors.Skip(1).First())
或者:
@foreach(Author author in Model.Authors.Take(2)) {
@Html.DisplayFor(author => author)
}
更重要的是......当你填入要显示在视图模型......你为什么不只是填充你真的想在视图中显示哪些模型? –
您可以使用显示模板找到解决方案http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html –