 <p>If you don't really care about the <code>IList&lt;T&gt;</code>, you can change your model to <code>IEnumerable&lt;T&gt;</code>. <a href="http://msdn.microsoft.com/en-us/library/hh833697%28v=vs.118%29.aspx" rel="nofollow">DisplayNameFor</a> method has an overload for <code>IEnumerable</code>, that means you will be able to do this:</p> <pre><code>@model IEnumerable&lt;PlusPlatform.Models.UserProfile&gt; ... &lt;th&gt; @Html.DisplayNameFor(model =&gt; model.UserName) &lt;/th&gt; </code></pre> <p><code>LabelFor</code> doesn't have this overload, because <code>label</code> should be used for a specific element, such as:</p> <pre><code>@Html.LabelFor(modelItem =&gt; Model[i].UserName) </code></pre> <p><strong>EDIT:</strong></p> <p>If you wan to post that data to controller, better create an <code>EditorTemplate</code>, name it <code>UserProfile</code>:</p> <pre><code>@model PlusPlatform.Models.UserProfile &lt;tr&gt; &lt;td&gt; @Html.EditorFor(m=&gt; m.UserName) &lt;/td&gt; &lt;td&gt; @Html.EditorFor(m=&gt; m.FirstName) &lt;/td&gt; &lt;td&gt; @Html.EditorFor(m=&gt; m.LastName) &lt;/td&gt; &lt;td&gt; @Html.EditorFor(m=&gt; m.DepartmentId) &lt;/td&gt; &lt;td&gt; @Html.EditorFor(m=&gt; m.IsActivated) &lt;/td&gt; &lt;/tr&gt; </code></pre> <p>Then in the View get rid of the loop:</p> <pre><code>@model IEnumerable&lt;PlusPlatform.Models.UserProfile&gt; @using (Html.BeginForm()) { &lt;table&gt; &lt;tr&gt; &lt;th&gt; @Html.DisplayNameFor(model =&gt; model.UserName) &lt;/th&gt; ... &lt;/tr&gt; @Html.EditorForModel() &lt;/table&gt; } </code></pre>