web-dev-qa-db-ja.com

MVC 3でコントローラーからビューにリストを渡す方法

Controllerアクションの一部のデータにバインドされたList <>があり、そのList <>をViewに渡して、Razor ViewのDataGridにバインドします。

私はMVCを初めて使用していますが、Viewでの受け渡し方法やアクセス方法を教えてください。

29
Balu

データをビューに渡すのは、オブジェクトをメソッドに渡すのと同じくらい簡単です。 Controller.View Method を見てください

protected internal ViewResult View(
    Object model
)

このようなもの

//controller

List<MyObject> list = new List<MyObject>();

return View(list);


//view

@model List<MyObject>

// and property Model is type of List<MyObject>

@foreach(var item in Model)
{
    <span>@item.Name</span>
}
43
archil

これは私がしました;

コントローラー内:

public ActionResult Index()
{
  var invoices = db.Invoices;

  var categories = db.Categories.ToList();
  ViewData["MyData"] = categories; // Send this list to the view

  return View(invoices.ToList());
}

ビューで:

@model IEnumerable<abc.Models.Invoice>

@{
    ViewBag.Title = "Invoices";
}

@{
  var categories = (List<Category>) ViewData["MyData"]; // Cast the list
}

@foreach (var c in @categories) // Print the list
{
  @Html.Label(c.Name);
}

<table>
    ...
    @foreach (var item in Model) 
    {
      ...
    }
</table>

それが役に立てば幸い

9
Nelson Miranda

動的オブジェクトViewBagを使用して、コントローラーからビューにデータを渡すことができます。

以下をコントローラーに追加します。

ViewBag.MyList = myList;

次に、ビューからアクセスできます。

@ViewBag.MyList

// e.g.
@foreach (var item in ViewBag.MyList) { ... }
6
Dennis Traub
  1. リストとビューに必要な他のものを含むモデルを作成します。

    例えば:

    public class MyModel
    {
        public List<string> _MyList { get; set; }
    }
    
  2. アクションメソッドから目的のリストをモデルに配置し、_MyListプロパティ、たとえば:

    public ActionResult ArticleList(MyModel model)
    {
        model._MyList = new List<string>{"item1","item2","item3"};
        return PartialView(@"~/Views/Home/MyView.cshtml", model);
    }
    
  3. ビューで次のようにモデルにアクセスします

    @model MyModel
    foreach (var item in Model)
    {
       <div>@item</div>
    }
    

開始に役立つと思います。

3
Abu Zafor