2016-12-24 35 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

相關問題