2011-02-24 64 views
3

我得到的错误信息是:MVC给出了一个奇怪的错误

传递到字典的模型项的类型为“System.Data.Linq.DataQuery`1 [MvcApplication1.ContentPageNav]”,但是这个字典需要一个'MvcApplication1.ContentPageNav'类型的模型项目。

public ActionResult Edit() 
{ 
    DataClasses1DataContext dc = new DataClasses1DataContext(); 
    var model = from m in dc.ContentPageNavs 
     select m; 
    return View(model); 
} 

为什么我得到这个错误任何想法?任何帮助将不胜感激。

回答

2

试试这个(因为你查看等待ContentPageNav项目代码不工作,但你送ContentPageNav列表):

public ActionResult Edit() 
{ 
    using(DataClasses1DataContext dc = new DataClasses1DataContext()) 
    { 
    // here you can select some specific item from the ContentPageNavs list 
    // Following query take first item from the list 
    var model = dc.ContentPageNavs.FirstOrDefault(); 
    return View(model); 
    } 
} 
6

您正在为您的model变量选择列表ContentPageNav

该视图期待ContentPageNav,而不是它们的列表。

试试这个:

var model = (from m in dc.ContentPageNavs 
    select m).FirstOrDefault(); 
+0

现在我已经在我的linq中放置了一个where条件,但我仍然得到相同的错误。查询只返回一行 – 2011-02-24 16:45:09

+1

@sly_Chandan - 一个项目的列表与一个项目不同。 – Oded 2011-02-24 16:46:28

2

由于错误指示类型不匹配。该视图需要一个项目,但您传递的是一组项目。尝试通过这个模型:(from m in dc.ContentPageNavs select m).FirstOrDefault();

4

它看起来像你的网页期望一个ContentPageNav,而不是一个LINQ表达式。尝试

return View(model.FirstOrDefault()); 

var model = dc.ContentPageNavs.FirstOrDefault(); 
2

有一个看看你的观点是强类型的。应该说,像

Inherits="System.Web.Mvc<ContentPageNav>" 

如果你需要一个列表,你可能要考虑使用

Inherits="System.Web.Mvc<IList<ContentPageNav>>" 

或某些类型的列表...您的LINQ可能是错的但如果这不是预期的。

相关问题