如何将DbContext从Model绑定到View

时间:2013-01-06 17:15:24

标签: razor binding view model asp.net-mvc-4

我是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属性。我怎么写这个?

1 个答案:

答案 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>
}