2013-03-28 56 views
0

我想列出视图中的国家。我创建了一个名为tbl_Countries的模型,代码是ASP.Net MVC剃刀 - 显示器国家给出错误的视图

public class tbl_Countries 
{ 
    public int ID { get; set; } 
    public string Country_Name { get; set; } 
} 

我有一个名为Home的控制器,其代码如下。我已经创建了数据库TESTDB的EDMX文件

public ActionResult Index() 
{    
    TestDBEntities TestdbContext = new TestDBEntities(); 
    var countries = TestdbContext.tbl_Countries.ToList(); 
    return View(countries); 
} 

下面是我查看代码 @model的IList 显示使用UL里用foreach

的国家。如果我运行该应用程序正在此错误:

The model item passed into the dictionary is of type 'System.Collections.Generic.List1[TestMVC.tbl_Countries]', 
but this dictionary requires a model item of type 'System.Collections.Generic.IList1[TestMVC.Models.tbl_Countries] 

我只想显示在视图中的国家列表,我想知道 没有创建模型类是否可以绑定网格? 是否必须使用@model指令来指定型号名称?

+0

请展现您的观点 – 2013-03-28 09:04:46

回答

0

,因为你在你看来@model名单中指定。您得到这个错误”,但传递给它的列表,试图改变它在视图中列出

是的,你可以删除@model可言,但在这种情况下,你的观点不会被强类型的,所以你将无法使用INTELLI感

0

模型

public List< tbl_Countries> country{get;set;} 

创建国家类型的列表在索引页面设置名单的值

public ActionResult Index() 
    {    
    TestDBEntities TestdbContext = new TestDBEntities(); 
    tbl_Countries objModel=new tbl_Countries(); 
    objModel.country = TestdbContext.tbl_Countries.ToList(); 
    return View(objModel); 
    } 
0

根据错误消息,您期待的视图中类型为List<TestMVC.Models.tbl_Countries>的模型与您的操作方法返回的List<TestMVC.tbl_Countries>类型不同。

要解决此问题,您可以创建视图所需的列表并将您从Entity Framework获得的数据映射到该列表。

例如:

public ActionResult Index() 
{    
TestDBEntities TestdbContext = new TestDBEntities(); 
var countries = new List<TestMVC.Models.tbl_Countries>(); 
countries = (from country in TestdbContext.tbl_Countries 
       select new TestMVC.Models.tbl_Countries 
       { 
        Country_Name = country.Country_Name 
       }).toList(); 

return View(countries); 
} 

要单独视图的逻辑和数据访问是一个很好的做法,型号分别独立地从你的数据模型,从模型EF在您的示例。