2

私は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; }
}

そして、データベーステーブル内のすべてのアイテムを含むリストをモデルにバインドしたいと思います。しかし、私はそれを行う方法を理解することはできません。

ビュー(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");
}

文字列「HelloWorld」をビューに渡します。次に、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>
}
于 2013-01-06T17:22:35.913 に答える