[英]MVC4, C#, retrieve data from two tables in one View
我是MVC的新手,我使用MVC4,而C#的新手。 我想在一个视图中从两个表中检索数据:tblProduct和tblCategory。 在该视图中,我想从tblCategory列获取“名称”列,并从tblProduct获取所有列。
我首先在类table.cs中的代码中定义了表:
public class tblCategory
{
//Primary Key
[Key]
[ScaffoldColumn(false)]
public int CategoryId { get; set; }
[MaxLength(160)]
public string Name { get; set; }
etc...
}
public class tblProduct {
//Primary Key
[Key]
[ScaffoldColumn(false)]
public int ProductId { get; set; }
//Foreign Key
public int CategoryId { get; set; }
[ForeignKey("CategoryId")]
public virtual tblCategory tblCategorys { get; set; }
[MaxLength(500)]
public string MainImageFileName { get; set; }
[MaxLength(160)]
public string Name { get; set; }
ect...
}
我的模型类bar.cs:
Namespace xx.Models
public class bar {
public tblProduct product { get; set; }
public tblCategory category { get; set; }
}
我如何在Controller中定义Index类? 这样我就可以将数据从模型栏发送到视图中。
public ActionResult Index(){
//How to define this?
}
以及如何建立视图? @model xx.Models.bar
但是我想在我的视图中为tblProduct中的所有列使用一个Foreach循环。 和tblCategory中的一列。
有人可以帮我吗? 谢谢!
您的Index动作应建立您的Bar类的实例
public ActionResult Index(){
var b = new bar();
b.product = some loading code;
b.category= some loading code;
return View(b);
}
您的Index.cshtml需要使用相同模型的实例
@model ProjectName.xx.Models.bar
<div class="editor-label">
@Html.LabelFor(model => model.category.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.category.Name)
@Html.ValidationMessageFor(model => model.category.Name)
</div>
@* just duplicate this once for each property you want from product *@
<div class="editor-label">
@Html.LabelFor(model => model.product.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.product.Name)
@Html.ValidationMessageFor(model => model.product.Name)
</div>
我不会在产品的属性上使用for循环,因为那样的话您需要反思,而且我怀疑该页面的运行速度会很快。
我认为这两个类都应该是模型,因为它们显然是数据库中表的表示。 但是我认为不是班级吧。 我认为您的结构应该这样组织:product(模型类),category(模型类)= bar(模型集合类)。 因此,不要将两个类都添加为Bar类的属性,而应定义将包含这些类但将这些类与公共接口(即IViewModel)绑定的字典。
public interface IViewModel{
string name {get;set;}
}
public class TblProduct: IVievModel{
/// your code
}
public class TblCategory: IVievModel{
/// your code
}
public class Bar{
private Dictionary<string, IViewModel> viewModels = new Dictionary<string,IViewModel>();
}
现在,在您的ActionResult方法中,您只需将这两个类添加到字典中,然后将此类Bar返回到您的视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.