Asp.net mvc 4 ASP.NET MVC 4使用EF显示来自2个模型的数据
我开始学习ASP.NETMVC4,并在一个文件中显示来自2个模型的数据 这是我的模型Asp.net mvc 4 ASP.NET MVC 4使用EF显示来自2个模型的数据,asp.net-mvc-4,model,Asp.net Mvc 4,Model,我开始学习ASP.NETMVC4,并在一个文件中显示来自2个模型的数据 这是我的模型 public class mst_item { [Key] [DisplayName("Item Code")] [Required] public string item_code{get;set;} [DisplayName("Item Name")] [Required] public string item_name{get;set;}
public class mst_item
{
[Key]
[DisplayName("Item Code")]
[Required]
public string item_code{get;set;}
[DisplayName("Item Name")]
[Required]
public string item_name{get;set;}
[DisplayName("Unit")]
[Required]
public mst_item_unit unit_id{ get; set; }
}
public class mst_item_unit
{
[Key]
public int unit_id { get; set; }
[DisplayName("Unit")]
public string unit_name { get; set; }
}
然后我的控制器:
public ActionResult Item()
{
var list_item = db.mst_item.Include("mst_item_unit").ToList();
return View(list_item);
}
然后,如何使用内部连接
或包含
在视图中显示基于mst\u项的单位名称。单位id
?比如:
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.item_name)
@Html.DisplayFor(modelItem => item.unit_name)
}
我在这里卡住了,但是我在显示
mst\u项
数据时成功了,而没有加入mst\u项
(只显示基于mst\u项.unit\u ID
)的ID。您应该创建一个将两个模型关联起来的视图模型,在控制器中填充该视图模型并在视图中使用它。下面的链接非常适合您的情况。
您有几个问题:
Include
的参数应该是实体上的导航属性,而不是表名。换句话说,将其更改为:
var list_item = db.mst_item.Include("unit_id").ToList();
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.item_name)
@Html.DisplayFor(modelItem => item.unit_id.unit_name)
}
MstItem
,而不是mst\u项
unit\u id
应类似于MstItemUnit
,或者只要unit
,如果您愿意的话。这样就不需要为其指定显示名称\u id
后缀尤其令人不安,因为它意味着这个属性是int
或Guid
——你知道,可以用作id的东西——而实际上你引用的是一个完整的对象unit\u name
应该只是name
。显然,这是单位的名称,因为那是类@Html.DisplayFor(m => item.Name)
@Html.DisplayFor(m => item.Unit.Name)
感谢您的建议,当我更改代码样式时,我已经成功了,我尝试了您的第一个解决方案更改var list_item=db.mst_item.Include(“unit_id”).ToList();和@Html.DisplayFor(modelItem=>item.unit\u id.unit\u name)但它仍然显示错误消息:未找到列unit\u id\u unit\u id,并且在我键入item.unit\u id时未建议使用unit\u名称。因此,我尝试了您的第二个解决方案来更改代码样式,然后我覆盖了实体名称和属性名称,而不是使用驼峰大小写更改我的表或字段名称,效果很好!它显示item.Unit.name属性建议