对我来说,@ Html.DisplayForModel()可以自动呈现标记而不需要我明确地将数据模型传递给它,这对我来说似乎是一种魔力。
@ Html.DisplayForModel()如何知道底层数据模型?
答案 0 :(得分:2)
我相信它在内部使用@ Html.ViewData.ModelMetadata来获取有关模型的必要信息。 ModelMetadata包含有关模型中所有属性,验证属性等的信息等。
答案 1 :(得分:2)
是的,实际上是迭代
<% foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm))) { %>
请参阅Brad Wilson的优秀博客http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html