说明:
视图是使用默认的脚手架类型生成的:“具有读/写操作和视图的MVC控制器,使用实体框架”
我想知道为什么“不显示INTELLISENSE”在 chaning强类型模型后不会显示智能感知,即使你把它改回来。
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.UserName) <- DOES NOT SHOW UP (INTELLISENSE)unless strongly typed against a NON-Collection must remove lambda expression
</th>
<th>
@Html.DisplayNameFor(model => model.)<- DOES NOT SHOW UP (INTELLISENSE) unless strongly typed against a NON-Collection must remove lambda expression
</th>
<th>
@Html.DisplayNameFor(model => model.)<- DOES NOT SHOW UP (INTELLISENSE)unless strongly typed against a NON-Collection must remove lambda expression
</th>
<th>
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)<- SHOWS INTELLISENSE
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)<- SHOWS INTELLISENSE
</td>
<td>
答案 0 :(得分:2)
有点怪我,但因为它是IEnumerable
,你当时只有Count()
这样的东西。
但是,您可以使用@Html.LabelFor(m => m.FirstOrDefault().UserName)
,所以现在您有一个智能感知实例。
旁注:我已经看到开箱即用的MVC脚手架使用了一个实例属性(尽管它是IEnumerable
)并且我唯一的猜测就是有一个以这种方式工作的重载,或者有MVC侏儒接线。不管怎样,你使用FirstOrDefault()
可能更好。作为一种捷径,我倾向于在页面顶部声明一个元素,并将其用于标题。 e.g。
@model IEnumerable<Foo>
@{
@header = Model.FirstOrDefault();
}
@* ... *@
<th>@Html.LabelFor(x => header.FirstName)</th>
<th>@Html.LabelFor(x => header.LastName)</th>
@* ... *@
答案 1 :(得分:1)
它没有显示它,因为现在您的集合中有多个用户配置文件。
@foreach (var user in Model)
{
@Html.DisplayNameFor(model => model.Name)
}