gpt4 book ai didi

asp.net-mvc - 为集合中的每个项目使用 DisplayTemplate(带有 DisplayFor)

转载 作者:行者123 更新时间:2023-12-03 11:34:36 25 4
gpt4 key购买 nike

我为 Comment 创建了一个 DisplayTemplate类,并将其放在 Comment/DisplayTemplates/Comment.cshtml 中.
Comment.cshtml输入正确:

@model Comment

然后,我有一个局部 View ,它采用 IEnumerable<Comment>为模型。在那里,我遍历集合并希望将 DisplayTemplate 用于 Comment类(class)。观点的完整性:
@model IEnumerable<Comment>

@foreach (var comment in Model.Where(c => c.Parent == null)) {
@Html.DisplayFor(model => comment)
}

但是,我在 Html.DisplayFor 上收到错误消息线:

The model item passed into the dictionary is of type 'System.Int32', but this dictionary requires a model item of type 'System.String'.



如何为 foreach 中的每个项目调用 DisplayTemplate环形?

最佳答案

而不是采用 IEnumerable<Comment> 的 View 它所做的只是遍历集合并简单地调用正确的显示模板:

@Html.DisplayFor(x => x.Comments)

其中 Comments 属性是 IEnumerable<Comment>它将自动执行循环并渲染 Comment.cshtml此集合的每个项目的显示模板。

或者,如果您真的需要这样的 View (不知道为什么),您可以简单地:
@model IEnumerable<Comment>
@Html.DisplayForModel()

至于 Where你在那里使用的子句你应该简单地删除它并将这个任务委托(delegate)给 Controller 。准备 View 模型是 Controller 的责任,而不是执行此类任务的 View 。

关于asp.net-mvc - 为集合中的每个项目使用 DisplayTemplate(带有 DisplayFor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com