2010-05-01 43 views
0

我的HTML操作鏈接帶我到一個視圖在那裏我可以看到細節.. 對於防爆:http://localhost:1985/Materials/Details/4 但它顯示錯誤,這個模型錯誤在asp.net mvc中說了些什麼?

The model item passed into the dictionary is of type 
'System.Data.Linq.DataQuery`1[CrMVC.Models.ConstructionRepository+Materials]' 
but this dictionary requires a model item of type 
'CrMVC.Models.ConstructionRepository+Materials'. 

而且我的模型是...

  public IQueryable<Materials> GetMaterial(int id) 
     { 
      return from m in db.Materials 
          join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
          where m.Mat_id == id 
          select new Materials() 
          { 
           Id = Convert.ToInt64(m.Mat_id), 
           Mat_Name = m.Mat_Name, 
           Mes_Name = Mt.Name, 
          }; 
     } 
     public class Materials 
     { 
      private Int64 id; 
      public string mat_Name; 
      public string mes_Name; 
      public Int64 Id 
      { 
       get 
       { 
        return id; 
       } 
       set 
       { 
        id = value; 
       } 
      } 
      public string Mat_Name 
      { 
       get 
       { 
        return mat_Name; 
       } 
       set 
       { 
        mat_Name = value; 
       } 
      } 
      public string Mes_Name 
      { 
       get 
       { 
        return mes_Name; 
       } 
       set 
       { 
        mes_Name = value; 
       } 
      } 
     } 
    } 

和我的控制器方法...

public ActionResult Details(int id) 
{ 
    var material = consRepository.GetMaterial(id).AsQueryable(); 
    return View("Details", material); 
} 

任何建議我在這裏失蹤了什麼?

+0

您是否正在使用.net 2(或更早版本)?否則,您可能需要使用自動屬性(只是爲了減少代碼量並使其更具可讀性)。看到這裏例如:http://weblogs.asp.net/dwahlin/archive/2007/12/04/c-3-0-features-automatic-properties.aspx – M4N 2010-05-01 10:52:58

回答

1

您的GetMaterial(id)方法應該可能只返回一個Material實例,因爲您的View只需要一個實例。例如:

public Materials GetMaterial(int id) 
{ 
    return (from m in db.Materials 
      join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id 
      where m.Mat_id == id 
      select new Materials() 
      { 
       Id = Convert.ToInt64(m.Mat_id), 
       Mat_Name = m.Mat_Name, 
       Mes_Name = Mt.Name, 
      }).FirstOrDefault(); 
    } 
+0

@Martin剛剛改變返回類型...它工作.... – 2010-05-01 10:07:55

+0

@Martin我的存儲庫類有一個材料類裏面..這是一個很好的做法,或者我必須將其移出...任何建議.. – 2010-05-01 10:08:41

+0

@Pandiya:我會分開領域模型(例如材料類)。 – M4N 2010-05-01 10:51:06

相關問題