我在ASP.net MVC项目中有一个视图,它与控制器(SubmissionController)和类(Submission)相关联。
在视图中,我使用以下方法显示类中的一些值:
@Html.DisplayFor(Function(model) model.Created)
这很有效,但我现在想要达到的目的是能够获得嵌套在我上面引用的模型中的Collection的显示名称。
更清楚;我正在查看视图中的许多提交的单个提交(使用SubmissionController的Details函数)。每个提交都有很多照片,我想在提交详细信息视图中显示这些照片以及提交详细信息。
要显示照片,我可以使用以下代码创建照片表...
<tbody>
@For Each item In Model.Photos
Dim currentItem = item
@<tr>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Photo_ID)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Photo_Status1.Value)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Photo_Size)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Photo_Taken)
</td>
</tr>
Next
</tbody>
虽然未经测试,但我相信上面的代码应该可以正常工作。
考虑到这一点,我如何获得Photo字段/属性的DisplayNameFor值?
这显然不起作用!
@Html.DisplayNameFor(Function(model) model.Photos.Photo_Size)
顺便说一下,我不想手动写入标题名称,它们必须来自模型。
DigitalD的回答几乎就在那里,这是解决方案。
@Dim photoModel = New Photo()
@Html.DisplayNameFor(Function(photoModelx) photoModel.Photo_ID)
答案 0 :(得分:1)
@Html.DisplayNameFor(Function(model) model.Photos.Photo_Size)
无效,因为model.Photos
可能是IEnumerable
且没有Photo_Size属性。你可能会传递一个像这样的空模型项目:
@Dim displayModel = new Photo()
@Html.DisplayNameFor(Function(displayModel) displayModel.Photo_Size)
等
答案 1 :(得分:0)
如果我理解正确,您正在尝试获取您正在显示的字段的名称(“拍摄照片”,“照片尺寸”等)?如果是这种情况,我建议使用DataAnnotations和LabelFor(item =&gt; item.Field)。这将为您提供我相信的内容。