Asp.net mvc 视图中嵌套模型的ASP.net MVC DisplayName
我在ASP.net MVC项目中有一个视图,它与控制器(SubmissionController)和类(Submission)关联 在视图中,我使用以下命令显示类中的一些值:Asp.net mvc 视图中嵌套模型的ASP.net MVC DisplayName,asp.net-mvc,model,controller,Asp.net Mvc,Model,Controller,我在ASP.net MVC项目中有一个视图,它与控制器(SubmissionController)和类(Submission)关联 在视图中,我使用以下命令显示类中的一些值: @Html.DisplayFor(Function(model) model.Created) 这非常有效,但我现在想要实现的是,能够获得嵌套在我上面引用的模型中的集合的显示名称 更清楚地说明这一点;我在视图中查看多个提交的单个提交(使用SubmissionController的详细信息功能)。每次提交都有许多照片,我希
@Html.DisplayFor(Function(model) model.Created)
这非常有效,但我现在想要实现的是,能够获得嵌套在我上面引用的模型中的集合的显示名称
更清楚地说明这一点;我在视图中查看多个提交的单个提交(使用SubmissionController的详细信息功能)。每次提交都有许多照片,我希望在提交详细信息视图中显示这些照片以及提交详细信息本身
要显示照片,我有以下代码创建一个照片表
<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>
顺便说一下,我不想手动写入标题名称,它们必须来自模型。
答复
他的答案几乎就在那里,这里是解决方案
@Dim photoModel = New Photo()
@Html.DisplayNameFor(Function(photoModelx) photoModel.Photo_ID)
如果我理解正确,您正在尝试获取要显示的字段的名称(“照片拍摄”、“照片大小”等)?如果是这种情况,我建议使用DataAnnotations和LabelFor(item=>item.Field)。我相信这会给你你想要的。
@Html.DisplayNameFor(函数(模型)model.Photos.Photo\u Size)
不起作用,因为model.Photos
可能是一个IEnumerable
并且没有Photo\u Size属性。您可以这样传递一个空的模型项:
@Dim displayModel = new Photo()
@Html.DisplayNameFor(Function(displayModel) displayModel.Photo_Size)
等等。碰巧这正是我需要做的!我必须将函数中的变量名更改为任意值,否则默认情况下它只会使用视图模型。至于MVC5,在这种情况下,您可能会得到一个错误,即您的DisplayNameFor调用不明确。因此,需要显式指定类型参数。在C#中类似于
@(Html.DisplayNameFor(model=>displayModel.Photo#u Size))
@Dim displayModel = new Photo()
@Html.DisplayNameFor(Function(displayModel) displayModel.Photo_Size)