2016-12-24 88 views
0

我很新的asp.net和我被困在该代码我不能纠正此错误 “传递到字典的模型产品类型'AMSPractice.Models.AddTable',但是这个字典需要一个'System.Collections.Generic.IEnumerable`1 [AMSPractice.Models.AddTable]'类型的模型项。传递到字典的模型项的类型为“AMSPractice.Models.AddTable”

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

这里是我的代码 控制器

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> 

回答

1

你的问题是你应该使用强类型视图的方式。从您的控制器中,当您返回return View(var);时,您将单个对象传递给您的视图,但您的视图是强类型的,以期望IEnumerable为AddTable对象。

要么你需要从你的控制器返回一个IEnumerable,或更改视图,只期望一个对象。

请尝试以下方法更改视图,只期望一个对象。

在你看来,从你必须@model AMSPractice.Models.AddTable

什么在这一点上改变你的强类型@model,你就不需要在foreach,你只会有以下。

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

对不起兄弟我忘了告诉我只想显示唯一值(意思是“第一次”超过一次,然后只显示一次)。所以我需要foreach。但我的问题没有解决:\。 – ttoseeff

相关问题