【问题标题】:MVC: The call is ambiguous between the following methods or propertiesMVC:以下方法或属性之间的调用不明确
【发布时间】:2015-02-06 16:25:42
【问题描述】:

我在 displaynamefor 行的以下代码中收到此错误 -

@model IEnumerable<AppsByBusiness2.Models.Colleague>
@using Web.Extensions

<h2>Colleagues</h2>

<table class="table">
@{var dummy = Model.FirstOrDefault(); }
<tr>
    <th>
        @Html.DisplayNameFor(z => dummy.FirstName)
    </th>

我正在尝试以这种方式显示模型的列名称,因为当模型列表而不是单个模型列表过去时,您无法以标准方式执行此操作,或者至少我找不到方法。这是另一个线程上给出的解决方案。

也许不相关,但我也无法通过 Model.Colleague 访问 Colleague,但在我看到的任何在线示例中,您应该能够以这种方式访问​​发送到视图的模型列表。

【问题讨论】:

  • 你能发布你的同事课程吗?

标签: c# asp.net-mvc


【解决方案1】:

如果您的模型是IEmumerable&lt;T&gt;,则不需要创建dummy 变量,因为DisplayNameFor 的重载需要IEnumerable&lt;T&gt;

@model IEnumerable<AppsByBusiness2.Models.Colleague>
@using Web.Extensions

<h2>Colleagues</h2>

<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(m => m.FirstName)
    </th>

【讨论】:

    【解决方案2】:

    您的 DisplayNameFor 应该引用模型,而不是变量。另请注意,Model.FirstOrDefault() 可能会返回 null,因此 dummy.FirstName 会抛出异常。因此,您需要决定如何处理异常,然后通过将 FirstOrDefault 更改为 First 或使用 if 语句仅在 Model.Any() 时使用该代码来相应地修改以下内容。

    @model IEnumerable<AppsByBusiness2.Models.Colleague>
    @using Web.Extensions
    
    <h2>Colleagues</h2>
    
    <table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(z => z.FirstOrDefault().FirstName)
        </th>
    

    【讨论】:

      【解决方案3】:

      既然你有列表,你可以遍历模型中的所有条目

      @foreach(var dummy in Model){
          <tr>
          <th>
              @Html.DisplayNameFor(z => dummy.FirstName)
          </th>
          <th>
               ...(other controls)
          </th>
      }
      

      或者你甚至可以设置分组方式....

      @foreach(var dummy in Model.GroupBy(m => m.FirstName)){
          <tr>
          <th>
              @Html.DisplayNameFor(z => dummy.FirstOrDefault().FirstName)
          </th>
          <th>
               ...(other controls)
          </th>
      }
      

      或者干脆

          <tr>
          <th>
              @Html.DisplayNameFor(z => z.FirstOrDefault().FirstName)
          </th>
          <th>
               ...(other controls)
          </th>
      

          <tr>
          <th>
               First Name
          </th>
      

      :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-11
        • 2012-02-09
        • 2011-04-10
        • 2020-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多