c# - '模型'不包含 'Object"的定义

标签 c# asp.net-mvc linq

我正在尝试从 SQL 查询中打印出数据,但我遇到了一个又一个错误。

基本上,我想做的是从数据库中获取教师的一些数据,然后在我的 View 中列出这些数据。但是每次我尝试打印时,我都会收到此错误

ViewModel' does not contain a definition for 'FirstName' and no extension method 'FirstName' accepting a first argument of type 'ViewModel' could be found.

这是我的代码;

View 模型

namespace Ability.Models
{
    public class ViewModel
    {
        public virtual IEnumerable<Teacher> Teachers { get; set; }
        public Teacher Teacher { get; set; }

        public virtual IEnumerable<Skill> Skills { get; set; }
        public Skill Skill { get; set; }
    }
}

Controller

public ActionResult Index()
        {
            string campus = Request.Params["Campus"];

            if (campus != null)
            {
                if (campus == "Alle")
                {
                    var teachers = (from t in db.Teachers
                                    select t);
                }
                else
                {
                    var teachers = (from t in db.Teachers
                                    where t.Campus == campus
                                    select t );
                }
            }
            else
            {
                var teachers = (from t in db.Teachers
                                select t);
            }

            var Model = new ViewModel
            {
                Teachers = db.Teachers.ToList(),
            };

            return View(Model);
        }

查看

@model IEnumerable<Ability.Models.ViewModel>

<h2>Teachers at Thomas More</h2>


               ...


@foreach (var Teacher in Model)
    {
        <tr>
            <td>
                @Teacher.FirstName
            </td>
            <td>
                @Teacher.LastName
            </td>
            <td>
                @Teacher.Email
            </td>
            <td>
                @Teacher.Campus
            </td>
        </tr>
    }

我不确定它是否适用,但我已经尝试做几件事,包括将我的循环更改为

@foreach (var Teacher in Model.Teachers)

然后我收到类似的错误

'IEnumerable' does not contain a definition for 'Teachers' and no extension method 'Teachers' accepting a first argument of type 'IEnumerable' could be found

期待我能得到的任何帮助!

最佳答案

我看到一些没有意义的事情。

首先,你在哪里使用teachers

个人认为下面的代码比较合理:

public ActionResult Index()
{

    IEnumerable<Teacher> teachers = Enumerable.Empty<Teacher>();

    string campus = Request.Params["Campus"];
    if (campus != null)
    {
        if (campus == "Alle")
        {
            teachers = (from t in db.Teachers
                        select t);
        }
        else
        {
            teachers = (from t in db.Teachers
                        where t.Campus == campus
                        select t );
        }
    }
    else
    {
        teachers = (from t in db.Teachers
                    select t);
    }

    var Model = new ViewModel
    {
        Teachers = teachers
    };

    return View(Model);
}

其次,您还必须初始化 ViewModel 的其他属性在上面的 Action 方法中。

现在让我们进入 View 。你向那里传递了一个类型为 ViewModel 的模型.当你想遍历教师序列时,你可以试试这个:

@foreach (var teacher in Model.Teachers)
{
    <tr>
        <td>
            @teacher.FirstName
        </td>
        <td>
            @teacher.LastName
        </td>
        <td>
            @teacher.Email
        </td>
        <td>
            @teacher.Campus
        </td>
    </tr>
}

以上所有内容都有意义前提是 db.Teachers是一个 IEnumerable<Teacher> .

关于c# - '模型'不包含 'Object"的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568568/

相关文章:

c# - WPF 用户控件的绑定(bind)问题

c# - 为 Windows Phone 8 应用程序项目创建控制台窗口的最简单方法是什么?

javascript - 如何阻止 Javascript 将日期转换为除法?

c# - RavenDB - 筛选文档并使用索引/查询获取计数

C# Linq 语句或用于总计子集的 foreach()?

c# - LINQ:转换为值类型 'System.Int32' 失败,因为具体化值为 null

c# - 从 C# 发送邮件时使用 To 或 CC - 在性能方面哪个更好?

c# - CLR 对不可变结构做了什么?

c# - 如何将列表从 View 发送到 Controller MVC

c# - MVC 多次提交表单