2

我是 MVC 新手,遇到了这个简单的问题(我认为)。我有一个 DbContext

public class UsersContext : DbContext
{
    public UsersContext() : base("Share_DB") {}
    public DbSet<ItemDB> Items { get; set; }
}

其中包含带有 id 和 Title 的项目列表:

[Table("Items")]
public class ItemDB
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Title { get; set; }
}

我想将包含数据库表中所有项目的列表绑定到模型。但是我不知道该怎么做。

在视图(cshtml 文件)中,我想我已经定义了我必须使用的模型(@model XXX.Models.ItemModel),然后显示它,如下所示:

<ul>
@foreach (XXX.Models.ItemModel.ItemDB item in @Items)
{
    <li>@item.Title</li>
}
</ul>

但是它找不到该@Items属性未找到。我怎么写这个?

4

1 回答 1

3

MVC 的工作方式是当您在控制器中返回视图时,传递给 View() 的任何内容最终都会作为 Model 属性。换句话说:

public ActionResult Index()
{
    return View("Hello World");
}

将字符串“Hello World”传递给您的视图。然后在您的 Index.cshtml 文件的顶部,您需要声明模型类型:

@model string

用法变为:

<div>@Model</div>

在您的情况下,您只需将 Items 列表传递给视图,并告诉它期望正确的模型类型:

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>
}
于 2013-01-06T17:22:35.913 回答