@ Html.DisplayForModel()如何知道底层数据模型?

时间:2011-02-07 08:58:22

标签: asp.net-mvc

对我来说,@ Html.DisplayForModel()可以自动呈现标记而不需要我明确地将数据模型传递给它,这对我来说似乎是一种魔力。

@ Html.DisplayForModel()如何知道底层数据模型?

2 个答案:

答案 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