【问题标题】:The model item passed into the dictionary is of type 'AMSPractice.Models.AddTable'传入字典的模型项的类型为“AMSPractice.Models.AddTable”
【发布时间】:2016-12-24 14:59:17
【问题描述】:

我对 asp.net 很陌生,我被困在那个代码上,我无法解决这个错误 “传入字典的模型项的类型为 'AMSPractice.Models.AddTable',但此字典需要类型为 'System.Collections.Generic.IEnumerable`1[AMSPractice.Models.AddTable]' 的模型项。”

我只想显示一个值,例如在我的表中有多个值名称“第一”所以我只想显示一次“第一”所以当我们写 FirstOrDefault 然后给出错误,当我们写 Where 时没有显示错误 但我只想要一个返回多个值的值。

这是我的代码 控制器

public ActionResult Login(string Name,string TeacherID)
        {
            AdmissionDBEntities obj = new AdmissionDBEntities();
            AddTable t = new AddTable();
            var v = obj.AddTables.FirstOrDefault(a => a.Teacher.Equals(Name) && a.Teacher_Id.Equals(TeacherID));
            if (v != null)
            {
               **var var = obj.AddTables.FirstOrDefault(b => b.Teacher==Name);**
                return View(var);
            }
            return RedirectToAction("/Home/Index");

我的观点是:

@model IEnumerable<AMSPractice.Models.AddTable>
<h3>Classes Assigned</h3>
        <br /><br />
        <ul>
@foreach (var a in Model)
{ 
    <li>
        @Html.ActionLink(a.Class,"Sections","Attendance", new { nid = a.Foreign_Id }, null)
    </li>
}
            </ul>

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    您的问题来自您对视图的强输入方式。从您的控制器中,当您返回 return View(var); 时,您将一个对象传递给您的视图,但您的视图是强类型的,以期望 AddTable 对象的 IEnumerable。

    您要么需要从控制器返回一个 IEnumerable,要么将视图更改为只期望一个对象。

    尝试以下操作以更改您的视图以仅期望单个对象。

    在您看来,将您的强类型 @model 从您所拥有的更改为 @model AMSPractice.Models.AddTable

    那时,您将不需要 foreach,而您只需要以下内容。

    <li>
        @Html.ActionLink(a.Class,"Sections","Attendance", new { nid = Model.Foreign_Id}, null)
    </li>
    

    【讨论】:

    • 对不起兄弟,我忘了告诉我我只想显示唯一值(意味着如果“第一个”出现不止一次,那么只显示一次)。所以我需要foreach。但我的问题没有解决:\ .
    猜你喜欢
    • 2019-06-01
    • 2021-10-01
    • 2011-02-14
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多