使用 foreach 在列表中显示

DisplayFor in list using foreach

这是我的控制器:

public ActionResult Details(int? id)
{
    if (id == null)
    {
        return RedirectToAction("Index");
    }
    var cor_pay_schedules = db.COR_PAY_SCHEDULES.Where(x=> x.PAY_SCHEDULE_GROUP_ID == id).ToList();
    if (cor_pay_schedules == null)
    {
        return HttpNotFound();
    }
    return View(cor_pay_schedules);
}

并且,查看:

@model IEnumerable<PartnerShips.COR_PAY_SCHEDULES>

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<div>
    <h4>TMP_UNI_PAY_SCHEDULES</h4>
    <hr />
    <dl class="dl-horizontal">
        @foreach (var q in Model)
        {

            <dt>
                @Html.DisplayNameFor(modelItem => q.BEGIN_DATE)
            </dt>

            <dd>
                @Html.DisplayFor(modelItem => q.BEGIN_DATE)
            </dd>

            <dt>
                @Html.DisplayNameFor(modelItem => q.END_DATE)
            </dt>

            <dd>
                @Html.DisplayFor(modelItem => q.END_DATE)
            </dd>

            <dt>
                @Html.DisplayNameFor(modelItem => q.AMOUNT_PERCENTAGE)
            </dt>

            <dd>
                @Html.DisplayFor(modelItem => q.AMOUNT_PERCENTAGE)
            </dd>

        }
    </dl>
</div>

q 中,它正确检索列表,但抛出异常:

Compiler Error Message: CS0121: The call is ambiguous between the following methods or properties: 'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor(System.Web.Mvc.HtmlHelper>, System.Linq.Expressions.Expression>)' and 'System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor,System.DateTime>(System.Web.Mvc.HtmlHelper>, System.Linq.Expressions.Expression,System.DateTime>>)'

怎么了?

简单改变

@model IEnumerable<PartnerShips.COR_PAY_SCHEDULES>

@model List<PartnerShips.COR_PAY_SCHEDULES>

基本上 George 发生的事情是 Ienumerable 不喜欢当你尝试 显示其模型的实际实例的属性名称。

它会希望您直接从模型中显示它,例如:

@Html.DisplayNameFor(model => model.END_DATE)

而不是显示实例中的名称

@Html.DisplayNameFor(modelItem => q.END_DATE)

我认为这是更 "correct" 的方式。

重点是字段的名称不会随着迭代而改变,所以看起来 从迭代变量中显示它相当不合逻辑。

编辑:Ienumerable 可以接收 .ToList() 它基本上只是一个支持简单迭代的列表。