3

解释:

视图是使用默认的脚手架类型生成的:“具有读/写操作和视图的 MVC 控制器,使用实体框架”

我想知道为什么不显示智能感知”在更改强类型模型后不显示智能感知,即使你将它改回来。

<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>
4

2 回答 2

2

有点让我感到奇怪,但因为它是一个IEnumerable你当时只有Count()可用的东西。

但是,您@Html.LabelFor(m => m.FirstOrDefault().UserName)现在可以使用智能感知实例。

旁注:我已经看到开箱即用的 MVC 脚手架可以使用实例属性(尽管它是一个IEnumerable),我唯一的猜测是有一个以这种方式工作的重载,或者有 MVC 侏儒连接它向上。无论哪种方式,您使用FirstOrDefault(). 作为捷径,我倾向于在页面顶部声明一个元素并将其用于标题。例如

@model IEnumerable<Foo>
@{
 @header = Model.FirstOrDefault();
}

@* ... *@
  <th>@Html.LabelFor(x => header.FirstName)</th>
  <th>@Html.LabelFor(x => header.LastName)</th>
@* ... *@
于 2013-07-30T16:45:38.243 回答
1

它没有显示它,因为现在您的集合中有多个用户配置文件。

@foreach (var user in Model)
{
    @Html.DisplayNameFor(model => model.Name)
}
于 2013-07-26T18:05:56.003 回答