0

我正在尝试列出视图中的国家。我创建了一个名为 tbl_Countries 的模型,代码如下

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 li 和 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在视图中使用指令指定模型名称?

4

3 回答 3

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);
    }
于 2013-03-28T09:31:33.743 回答
0

您收到此错误,因为您在视图中指定了@model List,但将其传递给 List,尝试在视图中将其更改为 List

是的,您完全可以删除@model,但在这种情况下,您的视图不会是强类型的,因此您将无法使用智能感知

于 2013-03-28T09:10:15.063 回答
0

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

要解决此问题,您可以创建视图期望的列表并将您从实体框架获得的数据映射到它。

例如:

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 模型。

于 2013-03-31T14:47:31.103 回答