【问题标题】:Templates can be used only with field access, property access in Razor模板只能用于 Razor 中的字段访问、属性访问
【发布时间】:2014-03-28 07:47:36
【问题描述】:

我在为 Product 创建编辑和模板时遇到此错误。

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

编辑在我的 Razor 视图中:

 <p>
  @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
    <th>
      @Html.DisplayNameFor(model => model.Select(m => m.ProductID))
    </th>
    <th>
      @Html.DisplayFor(model => model.Select(m => m.Name))
    </th>
    <th>
      @Html.DisplayFor(model => model.Select(m => m.ListPrice))
    </th>
    <th></th>
  </tr>

@foreach (var item in Model) {
  <tr>
    <td>
      @Html.DisplayFor(modelItem => item.ProductID)
    </td>
    <td>
      @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
      @Html.DisplayFor(modelItem => item.ListPrice)
    </td>
    <td>
      @Html.ActionLink("Edit", "Edit", new { id=item.ProductID }) |
      @Html.ActionLink("Details", "Details", new { id=item.ProductID }) |
      @Html.ActionLink("Delete", "Delete", new { id=item.ProductID })
    </td>
  </tr>
}
</table>

您知道这意味着什么以及如何解决它吗?非常感谢!

【问题讨论】:

  • 您想为模型中的每个ProductID 生成一个&lt;th&gt; 吗?
  • @TrungPham 出于什么原因?这是带有标题的简单表格,通常不会与这 3 个选择一起使用。你期望的结果是什么? DisplayForEnumerable&lt;&gt;?

标签: asp.net-mvc razor


【解决方案1】:

这不起作用吗?

<th> @Html.DisplayFor(model => model.ProductID) </th>

编辑,试试这样的:

<table id="myTable">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ProductID)
        </th>
    </tr>
     @foreach (var item in Model)                     
       {    
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.ProductID)
            </td>
            <td>
              @Html.DisplayFor(modelItem => item.ProductID)
            </td>
         </tr>
        }
</table>

【讨论】:

  • 你能展示你的模型的声明吗?它是 IEnumerable 还是不是?
  • @model IEnumerable&lt;AdventureCycle.Models.Product&gt; 在这里,千!
  • 在这种情况下你需要显示更多代码,你需要一个 foreach() 来检查你的模型
  • 我刚刚编辑了它。我输入了foreach(),还是报错。
  • 你需要摆脱那个.Select,尝试删除这部分“@Html.DisplayNameFor(model => model.Select(m => m.ProductID))”,然后输入类似“ProductID”看看它是否有效
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多