使用foreach在列表中显示

时间:2015-03-18 14:29:07

标签: asp.net-mvc asp.net-mvc-4 razor

这是我的控制人员:

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中,它正确检索列表,但它会引发异常:

  

编译器错误消息:CS0121:以下方法或属性之间的调用不明确:&#39; System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor(System.Web.Mvc.HtmlHelper&gt ;,System.Linq.Expressions .Expression&GT;)&#39;和&#39; System.Web.Mvc.Html.DisplayNameExtensions.DisplayNameFor,System.DateTime&gt;(System.Web.Mvc.HtmlHelper&gt;,System.Linq.Expressions.Expression,System.DateTime&gt;&gt;)&#39;

出了什么问题?

2 个答案:

答案 0 :(得分:0)

只需更改

@model IEnumerable<PartnerShips.COR_PAY_SCHEDULES>

@model List<PartnerShips.COR_PAY_SCHEDULES>

答案 1 :(得分:0)

基本上,乔治发生的事情是不可思议的,当你尝试时并不喜欢 显示其模型的实际实例的属性名称。

它会要求您直接从模型显示它,例如:

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

而不是显示实例中的名称

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

我认为更多&#34;正确&#34;这样做的方法。

关键是字段的名称不会因迭代而改变 从迭代变量中显示它是相当不合逻辑的。

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