首页 > 解决方案 > 在控制器中创建新方法并尝试为其调用视图后出现错误 500

问题描述

所以我对所有这些 MVC 都是新手,但是这是我到目前为止所做的......

我用 EntityF 创建了一个模型调用 Reservas,然后创建了一个控制器调用 ReservasController..

在此控制器中,我创建了以下 ActionResult 方法:

    public ActionResult ReservasHoy()
    {
        DateTime today = DateTime.Today;
        var result = from p in db.Reservas
                     where DbFunctions.TruncateTime(p.fecha) == today
                     select new { p.Reservas_Tipo.Description, p.Cliente.Nombre, p.fecha };

        var r = result.ToList();
        return View(r);
    }

这会从数据库返回一个列表。

在此处输入图像描述

但是,当视图加载时,我收到 500 错误

在此处输入图像描述

我知道这是一个通用错误,不知道如何调试它,我已经花了大约两天时间试图解决这个问题......但现在我已经筋疲力尽了。

这是用于创建视图的配置..

在此处输入图像描述

这是查看代码..

    @model IEnumerable<Project.Models.Reserva>

       @{
            Layout = null;
        }



        <html>

    <body>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.fecha)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Cliente.Nombre)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Reservas_Tipo.Description)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.fecha)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Cliente.Nombre)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Reservas_Tipo.Description)
        </td>

    </tr>
}

</table>

如果有人可以提供帮助,我将不胜感激

标签: c#asp.net-mvcentity-frameworklinqmodel-view-controller

解决方案


var r = result.ToList();
r here is List<a> where a is anonymous class.

的属性a

{Description,Nombre,fecha}

所以,当视图开始生成时,它会寻找model.Cliente.Nombre它没有得到这个值。用这个替换你的代码。

public ActionResult ReservasHoy()
    {
        DateTime today = DateTime.Today;
        var result = (from p in db.Reservas
                     where DbFunctions.TruncateTime(p.fecha) == today
                     select p)
                     .ToList()
                     .Select(x=>new Project.Models.Reserva 
                     { 
                      Reservas_Tipo=x.Reservas_Tipo, 
                      Cliente=x.Cliente, 
                      fecha=x.fecha 
                     }).ToList();

        var r = result.ToList();
        return View(r);
    }

现在rList<Project.Models.Reserva>,因此相关字段将被映射。让我知道你是否发出。


推荐阅读