Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';型号';不包含';“对象”;_C#_Asp.net Mvc_Linq - Fatal编程技术网

C# ';型号';不包含';“对象”;

C# ';型号';不包含';“对象”;,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我试图打印SQL查询中的数据,但一个接一个地出错 基本上,我想做的是从数据库中从教师那里获取一些数据,然后在我的视图中列出这些数据。然而,每次我尝试打印时,都会出现此错误 ViewModel“”不包含“FirstName”的定义,也不包含 扩展方法“FirstName”接受类型为的第一个参数 找不到“ViewModel” 这是我的密码 视图模型 namespace Ability.Models { public class ViewModel { public v

我试图打印SQL查询中的数据,但一个接一个地出错

基本上,我想做的是从数据库中从教师那里获取一些数据,然后在我的视图中列出这些数据。然而,每次我尝试打印时,都会出现此错误

ViewModel“”不包含“FirstName”的定义,也不包含 扩展方法“FirstName”接受类型为的第一个参数 找不到“ViewModel”

这是我的密码

视图模型

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; }
    }
}
查看

@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>
    }
但是我收到了一个类似的错误

“IEnumerable”不包含“教师”的定义 没有扩展方法“教师”接受类型的第一个参数 可以找到“IEnumerable”


期待我能得到任何帮助

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

首先,您在哪里使用
教师

就我个人而言,我认为以下代码更合理:

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);
}

如果
db.Teachers
是一个
IEnumerable

您将类型
ViewModel
发送到视图,则上述所有操作都是有意义的:

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

return View(Model);

但是它需要类型
IEnumerable作为一个实际的例子。

您的模型是一个ViewModels列表。您需要使用
@foreach(Model.Teachers中的var-Teacher)

谢谢您的帮助,我按照您的建议更改了代码。但是,我仍然得到红色下划线,错误为“'IEnumerable'不包含'Teachers'的定义,并且找不到接受'IEnumerable'类型的第一个参数的扩展方法'Teachers'”nvm,问题已解决,非常感谢您的支持answer@NicolasDecroos不客气。我很高兴我帮了忙:)嗨,谢谢你的帮助。我已经尝试了您的解决方案,但它仍然给我错误“'IEnumerable'不包含'Teachers'的定义,并且找不到接受'IEnumerable'类型的第一个参数的扩展方法'Teachers'。如果这是一个明显的错误,很抱歉,这是一个全新的错误。@NicolasDecroos:听起来您没有成功更改视图顶行上的模型类型声明。你能确认吗?这是[AT]model Ability.Models行。ViewModel@NicolasDecroos:有趣。哪一行代码会引发这个错误?对不起,我刚刚完全复制了你的代码行,现在它可以工作了。一定是个小错误。非常感谢你的帮助
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);
}
@foreach (var teacher in Model.Teachers)
{
    <tr>
        <td>
            @teacher.FirstName
        </td>
        <td>
            @teacher.LastName
        </td>
        <td>
            @teacher.Email
        </td>
        <td>
            @teacher.Campus
        </td>
    </tr>
}
var Model = new ViewModel
{
    Teachers = db.Teachers.ToList(),
};

return View(Model);
@model IEnumerable<Ability.Models.ViewModel>
@model Ability.Models.ViewModel
@foreach (var Teacher in Model.Teachers)