我是MVC的新手并且有这个简单的问题(我认为)。 我有一个DbContext
public class UsersContext : DbContext
{
public UsersContext() : base("Share_DB") {}
public DbSet<ItemDB> Items { get; set; }
}
其中包含ID和标题的项目列表:
[Table("Items")]
public class ItemDB
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Title { get; set; }
}
我希望将数据库表中所有迭代的列表绑定到模型。但是我无法弄清楚如何做到这一点。
在View(cshtml文件)中我想我已经定义了我必须使用的模型(@model XXX.Models.ItemModel
)然后用以下内容显示它:
<ul>
@foreach (XXX.Models.ItemModel.ItemDB item in @Items)
{
<li>@item.Title</li>
}
</ul>
但是找不到@Items
属性。我怎么写这个?
答案 0 :(得分:3)
MVC的工作方式是在控制器中返回视图时,传递给View()的任何内容最终都是Model属性。换句话说:
public ActionResult Index()
{
return View("Hello World");
}
将字符串“Hello World”传递给您的View。然后在Index.cshtml文件的顶部,您需要声明模型类型:
@model string
用法变为:
<div>@Model</div>
在您的情况下,您只需将项目列表传递给视图,并告诉它期望正确的模型类型:
public ActionResult Index()
{
using (var db = new UsersContext())
{
var items = db.Items.ToList();
return View(items);
}
}
然后在你看来:
@model IEnumerable<ItemDB>
您可以将其用作:
@foreach (var item in Model)
{
<div>@item.Title</item>
}